json字符串转为map结构,复杂json字符串转为map结构
发布日期:2021-06-30 11:04:04
浏览次数:2
分类:技术文章
本文共 4117 字,大约阅读时间需要 13 分钟。
json转map通用方法
开发的时候,经常会遇到json转为Map的需求,简单的json还好处理,如果json比较复杂,转换后为Map嵌套结构,就比较难处理。比如:将下面的json字符串转为Map接口:
{"data": [ { "IR_SRCNAME": "车主之家", "IR_SITENAME": "车主之家", "IR_AUTHORS": null, "IR_URLTITLE": "2017年4月份高尔夫销量11798台, 同比下降20.24%", "IR_URLNAME": "http://news.16888.com/a/2017/0521/8172148.html", "IR_ABSTRACT": " 2017年4月份高尔夫销量11798台 ", "IR_URLTIME": "2017/05/21 23:35:00", "IR_HKEYBBSNUM": "18093721078864168420-0", "IR_CHANNEL": "新闻_汽车新闻", "COMPANY_RISK_CONN": "汽车之家股份有限公司_财务风险\偿债能力\营运资本_18;", "ZFM": "负面" } ], "path": "/cloud/wsu/queryByKeyword!get_by_fullname.action", "rstcode": "0000", "rstcount": 19476, "cmpname": "汽车之家股份有限公司", "shortname": "汽车之家", "rstmsg": "查询成功"}
看完发现,这个json字符串转为map后,应该是Map嵌套Map结构的。怎么办呢?
这里提供一方法,可以当作工具类,只要json字符串没有问题,嵌套几层都可以。
import net.sf.json.JSONArray;import net.sf.json.JSONObjectpublic class Json2Map { /** * 将json字符串转为Map结构 * 如果json复杂,结果可能是map嵌套map * @param jsonStr 入参,json格式字符串 * @return 返回一个map */ public static Mapjson2Map(String jsonStr) { Map map = new HashMap<>(); if(jsonStr != null && !"".equals(jsonStr)){ //最外层解析 JSONObject json = JSONObject.fromObject(jsonStr); for (Object k : json.keySet()) { Object v = json.get(k); //如果内层还是数组的话,继续解析 if (v instanceof JSONArray) { List
用上面这个方法处理完后,打印这个map,结果如下:
{rstcount=19476, path=/cloud/wsu/queryByKeyword!get_by_fullname.action, data=[{ZFM=负面, COMPANY_RISK_CONN=汽车之家股份有限公司_财务风险偿债能力营运资本_18;, IR_URLTIME=2017/05/21 23:35:00, IR_URLTITLE=2017年4月份高尔夫销量11798台, 同比下降20.24%, IR_SRCNAME=车主之家, IR_SITENAME=车主之家, IR_URLNAME=http://news.16888.com/a/2017/0521/8172148.html, IR_ABSTRACT= 2017年4月份高尔夫销量11798台 , IR_HKEYBBSNUM=18093721078864168420-0, IR_AUTHORS=null, IR_CHANNEL=新闻_汽车新闻}], rstcode=0000, cmpname=汽车之家股份有限公司, shortname=汽车之家, rstmsg=查询成功}
可以看到结果是一个Map嵌套一个Map。可以把这个方法存起来,遇到json转Map时,直接使用就好了。
注意:这里的json字符串中很多双引号,用eclipse开发,可能会涉及转义问题,但是idea就不用,把这个json传扔到idea里,直接就转义了这些双引号,如下:
String jsonp = "{\n" + "\"data\": [\n" + " {\n" + " \"IR_SRCNAME\": \"车主之家\",\n" + " \"IR_SITENAME\": \"车主之家\",\n" + " \"IR_AUTHORS\": null,\n" + " \"IR_URLTITLE\": \"2017年4月份高尔夫销量11798台, 同比下降20.24%\",\n" + " \"IR_URLNAME\": \"http://news.16888.com/a/2017/0521/8172148.html\",\n" + " \"IR_ABSTRACT\": \" 2017年4月份高尔夫销量11798台 \",\n" + " \"IR_URLTIME\": \"2017/05/21 23:35:00\",\n" + " \"IR_HKEYBBSNUM\": \"18093721078864168420-0\",\n" + " \"IR_CHANNEL\": \"新闻_汽车新闻\", \n" + " \"COMPANY_RISK_CONN\": \"汽车之家股份有限公司_财务风险\\偿债能力\\营运资本_18;\",\n" + " \"ZFM\": \"负面\"\n" + " }\n" + " ],\n" + " \"path\": \"/cloud/wsu/queryByKeyword!get_by_fullname.action\",\n" + " \"rstcode\": \"0000\",\n" + " \"rstcount\": 19476,\n" + " \"cmpname\": \"汽车之家股份有限公司\",\n" + " \"shortname\": \"汽车之家\",\n" + " \"rstmsg\": \"查询成功\"\n" + " }\n";
上面代码直接复制使用就好,不用额外处理。
依赖为参考:
转载地址:https://it4all.blog.csdn.net/article/details/77871115 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月07日 20时23分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于java的SSM框架的流浪猫救助网站的设计与实现
2019-04-30
基于java的SSM框架的教务关系系统的设计与实现
2019-04-30
别再问我什么是A/B测试了!
2019-04-30
如何用同期群分析模型提升留存?(Tableau实战)
2019-04-30
爱了,吹爆这个高颜值的流程图工具!
2019-04-30
一个数据项目
2019-04-30
java的酒店房间管理系统
2019-04-30
基于Java的截图工具
2019-04-30
基于JAVA的停车场管理系统
2019-04-30
基于Java实现的商品推荐系统
2019-04-30
基于Jsp和MySql实现的网络聊天室
2019-04-30
基于JSP心悦图书城系统设计与实现
2019-04-30
基于Spring+SpringMVC+hibernate实现的体检中心管理系统
2019-04-30
基于JAVA的宠物网站的设计与实现
2019-04-30
基于JSP的SSM框架实现的员工信息管理系统
2019-04-30
基于Spring+Struts+Hibernate实现的健康管理平台
2019-04-30
基于spring+struts2+hibernate实现的Java web论坛
2019-04-30
基于SSH保险业务管理系统的设计与实现
2019-04-30
基于SSH框架的电影订票系统网站的设计与实现
2019-04-30
基于SSM和MySQL实现的多业务农情信息云平台
2019-04-30