java之json、字符串转换

来源:互联网 发布:对流取暖器 知乎 编辑:程序博客网 时间:2024/06/03 21:32
{    "jdytrip_products_list_response": {        "products": {            "product": [                {                    "p_id": 102771,                     "p_name": "【自由行】【冰与火的体验】",                     "p_sname": "因为爱情主题酒店1晚+大明山滑雪门票+众安氡温泉门票+双早",                     "p_num": "JDYS0001",                     "p_type": 10,                     "p_key": "",                     "p_type_name": "周边短线",                     "buslist": "[20170413,20170414,20170415,20170416,20170420,20170421,20170422,20170423,20170427,20170428,20170429,20170430]",                     "p_days": "5",                     "p_cover": "http:\\/\\/img400.jdytrip.cn\\/2017\\/0458eb59d2f112f.BMP",                     "start_place": "[]",                     "business": "测试",                     "business_id": 125416,                     "ticket_detail_min": ""                }            ]        },         "total": 71    }}

这是借口调用的返回结果,需要转换成自己需要的类型

public abstract class RopResponse implements Serializable {    private static final long serialVersionUID = 5014379068811962022L;    @ApiField("code")    private String errorCode;    @ApiField("msg")    private String msg;    @ApiField("sub_code")    private String subCode;    @ApiField("sub_msg")    private String subMsg;    private String body;    private Map<String, String> params;    ......}
public class JdytripProductsListResponse extends RopResponse {    private static final long serialVersionUID = 2491528651932375471L;    @ApiField("total")    private String total;    @ApiField("products")    private Products products;    ...... }

这里使用的是阿里的fastjson类,有点麻烦

    ......  JdytripProductsListResponse response = ropClient.execute(request, session);            if (response != null && response.isSuccess()) {                String responseBody = response.getBody();                JSONObject jsonObject = JSONObject.parseObject(responseBody);                Set<Map.Entry<String, Object>> entries = jsonObject.entrySet();                for (Map.Entry<String,Object> map : entries) {                    Object value = map.getValue();                    JSONObject jsonObject1 = JSONObject.parseObject(value + "");                    JSONObject productsJsonObj = jsonObject1.getJSONObject("products");                    JSONArray productJsonObj = productsJsonObj.getJSONArray("product");                    List<Object> objects = productJsonObj.subList(0, productJsonObj.size() - 1);                    for (Object obj : objects) {                        Map<String, Object> map2 = (Map<String, Object>) obj;                        Product product = new Product();                        product.setDestCity(map2.get("arrive_place")+"");                        ......                        productsList.add(product);                    }                }                return productsList;            }  ......
{    "jdytrip_organization_list_response": {        "organizations": {            "organization": [                {                    "org_id": "2613",                     "org_pid": "0",                     "org_bh": "qd001",                     "org_name": "杭州趣搭网络有限公司",                     "org_fax": "",                     "org_service_tel": "18667001578",                     "org_sname": "趣搭",                     "org_addr": "杭州西湖区文三路90号",                     "org_legal": "陈敬良",                     "org_tel": "18667001578",                     "org_mob": "18667001578",                     "org_web": "",                     "org_province": "浙江",                     "org_city": "杭州",                     "org_county": "西湖区",                     "org_type": "供应商",                     "org_logo": ""                },                 {                    "org_id": "2612",                     "org_pid": "0",                     "org_bh": "JDY002612",                     "org_name": "测试供应商R",                     "org_fax": "",                     "org_service_tel": "",                     "org_sname": "西湖",                     "org_addr": "西湖",                     "org_legal": "晓雨",                     "org_tel": "",                     "org_mob": "18686765638",                     "org_web": "",                     "org_province": "浙江",                     "org_city": "杭州",                     "org_county": "江干区",                     "org_type": "供应商",                     "org_logo": ""                }            ]        },         "total": "73"    }}

这里使用的是net.sf.json 包的类,更简单些

......String body = response.getBody();            net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(body);            Object jdytrip_organization_list_response = jsonObject.get("jdytrip_organization_list_response");            net.sf.json.JSONObject organizationsJson = net.sf.json.JSONObject.fromObject(jdytrip_organization_list_response);            Object organizations = organizationsJson.get("organizations");            net.sf.json.JSONObject organizationJson = net.sf.json.JSONObject.fromObject(organizations);            Object organization = organizationJson.get("organization");            List<Organizations> organizationsList =                    (List<Organizations>) JSON.parseArray(organization.toString(), response.getOrganizations().getClass());  ......
0 0
原创粉丝点击