关键API之jsonObject.has();点进去看其源码可知:
/**
* Returns true if this object has a mapping for {@code name}. The mapping
* may be {@link #NULL}.
*/
public boolean has(String name) {
return nameValuePairs.containsKey(name);
}
标准解析:
JSONObject dataJson=new JSONObject("你的Json数据“);
JSONObject response=dataJson.getJSONObject("response");
JSONArray data=response.getJSONArray("data");
JSONObject info=data.getJSONObject(0);
String province=info.getString("province");
String city=info.getString("city");
String district=info.getString("district");
String address=info.getString("address");
System.out.println(province+city+district+address);
加上判断后
private final static String CALLBACK_ID_STR = "callbackId";
private final static String RESPONSE_ID_STR = "responseId";
private final static String RESPONSE_DATA_STR = "responseData";
private final static String DATA_STR = "data";
private final static String HANDLER_NAME_STR = "handlerName";
public static Message toObject(String jsonStr) {
Message m = new Message();
try {
JSONObject jsonObject = new JSONObject(jsonStr);
m.setHandlerName(jsonObject.has(HANDLER_NAME_STR) ? jsonObject.getString(HANDLER_NAME_STR) : null);
m.setCallbackId(jsonObject.has(CALLBACK_ID_STR) ? jsonObject.getString(CALLBACK_ID_STR) : null);
m.setResponseData(jsonObject.has(RESPONSE_DATA_STR) ? (JSONObject)jsonObject.get(RESPONSE_DATA_STR) : null);
m.setResponseId(jsonObject.has(RESPONSE_ID_STR) ? jsonObject.getString(RESPONSE_ID_STR):null);
m.setData(jsonObject.has(DATA_STR) ? (JSONObject)jsonObject.get(DATA_STR):null);
return m;
} catch (JSONException e) {
e.printStackTrace();
}
return m;
}