JSON字符串解析成key-value获取键值对的值

最近在做日志解析这块,记录一下

转为map,循环得到key,value

{
	"dt": "VENUS_TDS_V0700R0200B20150601",
	"level": 30,
	"id": "152321043",
	"type": "Alert Log",
	"time": 1467958351859,
	"source": {
		"ip": "172.20.0.6",
		"port": 0,
		"mac": "00-06-f6-87-c5-c0"
	},
	"destination": {
		"ip": "0.0.0.0",
		"port": 0,
		"mac": "00-06-f6-87-c5-c0"
	},
	"protocol": "ICMP",
	"subject": "SCAN_ICMP扫描探测",
	"message": "nic=0; ICMP scan rate, (scaned host num, sec):(11, 1)"
}
 Map maps = (Map) JSON.parse(str);
        System.out.println("这个是用JSON类来解析JSON字符串!!!");
        for (Object map : maps.entrySet()) {
            System.out.println(((Map.Entry) map).getKey() + "     " + ((Map.Entry) map).getValue());
        }

2,根节点为”[]”的json

[{
	"id": 1,
	"name": "china",
	"age": 18,
	"num": 123456
}, {
	"id": 2,
	"name": "hongkong",
	"age": 2,
	"num": 9527
}]
 JSONArray jsonArray=new JSONArray(json);
        for(int i=0;i<jsonArray.length();i++){
            JSONObject jsonObject=jsonArray.getJSONObject(i);
            //通过key获取value
             String name = jsonObject.getString("name");
             int id = jsonObject.getInt("id");
             int age = jsonObject.getInt("age");
             int num = jsonObject.getInt("num");
            //分割线------------------------
            //直接获取key-value
            Iterator<String> it = jsonObject.keys();
            while(it.hasNext()){
                String key = it.next();
                Object value = jsonObject.get(key)+"";
                System.out.println(key+"   :    "+value);
            }
        }

如果要获取有序的Map,使用这个方法:

Map<String, Object> dummyMap =  JSON.parseObject(str,LinkedHashMap.class, Feature.OrderedField);//关键的地方,转化为有序map

此条代码链接来源:
https://blog.csdn.net/Jason_K0/article/details/88093478

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值