java之json、字符串转换

{
    "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());
  ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天进步一点_点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值