Json数据样例一,解析简单json:
{"1":[1,4,3,2],"2":[1],"3":[1,4,3,2],"4":[1,6,5,4,3,2],"5":[7,1,6,5,4,3,2,8,9],"6":[7,1,8,2,3,9,4,5,6],"7":[7,1,8,2,3,9,6,5,4],"9":[1,2,3,4,5,6],"15":[1,4,3,2]}
java代码:
List<String> key = new ArrayList<String>();
//将字符串转json对象
JSONObject json1=JSONObject.parseObject(json);
//将json对象转map
Map<String, Object> map2 =json1;
//遍历map
for (Entry<String, Object> entry : map2.entrySet()) {
String str = String.valueOf(entry.getValue());
String temp = str.substring(1,str.length()-1);
String[] array = temp.split(",");
List<String> list = new ArrayList<String>();
for (int i = 0; i < array.length; i++) {
list.add(array[i]);
}
if(list.contains("1"))
{
key.add(entry.getKey());
}
}
使用实例二:
json数据样例:
String json = "{"
+"\"error_code\": 0,"
+"\"resultcode\": \"200\","
+"\"reason\": \"成功的返回\","
+"\"result\": {"
+"\"BJ\": {"
+"\"province\": \"北京\","
+"\"citys\": [{"
+"\"city_name\": \"北京\","
+"\"city_code\": \"BJ\","
+"\"abbr\": \"京\","
+"\"engine\": \"1\","
+"\"engineno\": \"0\","
+"\"class\": \"0\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"}]"
+"},"
+"\"SH\": {"
+"\"province\": \"上海\","
+"\"citys\": [{"
+"\"city_name\": \"上海\","
+"\"city_code\": \"SH\","
+"\"abbr\": \"沪\","
+"\"engine\": \"1\","
+"\"engineno\": \"0\","
+"\"class\": \"0\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"}]"
+"},"
+"\"LN\": {"
+"\"province\": \"辽宁\","
+"\"citys\": [{"
+"\"city_name\": \"沈阳\","
+"\"city_code\": \"LN_SY\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"4\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"锦州\","
+"\"city_code\": \"LN_JZ\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"6\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"营口\","
+"\"city_code\": \"LN_YK\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"葫芦岛\","
+"\"city_code\": \"LN_HLD\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"大连\","
+"\"city_code\": \"LN_DL\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"鞍山\","
+"\"city_code\": \"LN_AS\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"4\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"抚顺\","
+"\"city_code\": \"LN_FS\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"4\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"丹东\","
+"\"city_code\": \"LN_DD\","
+"\"abbr\": \"辽\","
+"\"engine\": \"1\","
+"\"engineno\": \"3\","
+"\"class\": \"0\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"阜新\","
+"\"city_code\": \"LN_FX\","
+"\"abbr\": \"辽\","
+"\"engine\": \"1\","
+"\"engineno\": \"0\","
+"\"class\": \"0\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"辽阳\","
+"\"city_code\": \"LN_LY\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"},"
+"{"
+"\"city_name\": \"铁岭\","
+"\"city_code\": \"LN_TL\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"0\","
+"\"regist\": \"1\","
+"\"registno\": \"1\""
+"},"
+"{"
+"\"city_name\": \"朝阳\","
+"\"city_code\": \"LN_CY\","
+"\"abbr\": \"辽\","
+"\"engine\": \"0\","
+"\"engineno\": \"0\","
+"\"class\": \"1\","
+"\"classno\": \"0\","
+"\"regist\": \"0\","
+"\"registno\": \"0\""
+"}"
+"]"
+"}"
+"}"
+"}";
解析json代码展示:
JSONObject json1=JSONObject.parseObject(json);
String str = json1.getString("result");
JSONObject str_=JSONObject.parseObject(str);
Map<String, Object> map2 =str_;
// System.out.println(map2.size());
for (Entry<String, Object> entry : map2.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
// System.out.println("map2: "+key + " == " + value);
JSONObject map_json = JSONObject.parseObject(value);
Map<String, Object> map3 =map_json;
for (Entry<String, Object> entry3 : map3.entrySet()) {
String key_ = entry3.getKey();
String value_ = entry3.getValue().toString();
System.out.println("map_json: "+key_ + " == " + value_);
if(!value_.startsWith("[{") && !value_.endsWith("}]"))
{
break;
}
JSONArray map_map_json = JSONArray.parseArray(value_);
System.out.println(map_map_json.size());
for (int i = 0; i < map_map_json.size(); i++) {
System.out.println(" =========" + map_map_json.get(i));
Object obj =map_map_json.get(i);
JSONObject map_map_json_ = JSONObject.parseObject(obj.toString());
Map<String, Object> map4 =map_map_json_;
for (Entry<String, Object> entry4 : map4.entrySet()) {
String key_4 = entry4.getKey();
String value_4 = entry4.getValue().toString();
System.out.println("map_map_json_: "+key_4 + " == " + value_4);
}
}
}
}
(2)解析json型的字符串:
String datas="{\"imei\":\"358732036143010\",\"version\":\"2.3\",\"apk\":[{\"appname\":\"SyncKey\",\"packagename\":\"com.discovery.synckey\"},{\"appname\":\"DbTest\",\"packagename\":\"com.discovery.synckey\"},{\"appname\":\"AppUpdate\",\"packagename\":\"com.discovery.synckey\"}]}";
JSONObject reqJson=JSONObject.parseObject(datas);
String imei=reqJson.getString("imei");
String apk=reqJson.getString("apk");//json型集合
JSONArray parseArry =JSONObject.parseArray(apk);
Iterator<Object> iterator =parseArry.iterator();
while(iterator.hasNext())
{
JSONObject object =(JSONObject)iterator.next();
String appname =(String)object.getString("appname")
}
json解析多节点json数据时,主要是分析json格式,找到规律循环遍历;如果没有规律可循,可以层层解析,找到需要的数据节点。
{
"requestId": "SMELP_DATA_CUSTOMS_8062a1b4-a954-4fd1-8ded-40fdf7594296",
"responseData": {
"loadType": "2--2",
"records": [
{
"erMsg": "'银行卡号'卡BIN校验未通过",
"seqNo": "0",
"cardType": "",
"authResult": "",
"erCode": "E000001",
"bankName": ""
}
],
"detailError": null,
"responseMessage": "接口调用成功!",
"requestNo": "123",
"transNo": null,
"dataSource": null,
"responseCode": "000000"
},
"responseMessage": "请求成功",
"responseCode": "000000"
}
例如获取erMsg里的信息:
//result是调用接口之后返回的String类型的json串
JSONObject obj = JSONObject.parseObject(result);
JSONObject responseData = (JSONObject) obj.get("responseData");
JSONArray records = (JSONArray) responseData.get("records");
JSONObject erMsg1 = (JSONObject) records.get(0);
String erMsg = erMsg1.getString("erMsg");
例如获取responseMessage里的信息:
JSONObject obj = JSONObject.parseObject(result);
String msg = obj.getString("responseMessage");