java 处理 json数据

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");
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT界的一只菜鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值