{
"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());
......