Java 把json对象转成map键值对的方法
工具方法:本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据
maven引用jar包版本:
org.json json 20090211
工具类:
packagecom.baofoo.admin.test; //importcom.alibaba.fastjson.JSONObject; importlombok.extern.slf4j.Slf4j; importorg.junit.Test; importorg.json.*; importjava.util.*; /** *CreatedbyBF100on2018/4/12. */ @Slf4j publicclassTestByCaoxNew{ @Test publicvoidtest1(){ try{ inta=1/0; }catch(Exceptione){ log.error("callException:{}",e); e.printStackTrace(); } System.out.println("comeon!!!"); } @Test publicvoidtest2()throwsException{ Stringstr="{\"result\":\"success\",\"message\":\"成功!\"}"; Stringstr2="{result:success,message:成功}"; //JSONObjectjsStr=JSONObject.parseObject(str); //System.out.println(jsStr); JSONObjectobj=newJSONObject(str); StackstObj=newStack (); stObj.push(obj); Map resultMap=newHashMap (); JsonToMap(stObj,resultMap); Set keys=resultMap.keySet(); for(Stringkey:keys){ System.out.println(key+":"+resultMap.get(key)); } } /** *@Author:sks *@Description:把json对象数据存储在map以键值对的形式存储,只存储叶节点 *@Date: */ privatestaticvoidJsonToMap(Stack stObj,Map resultMap)throwsException{ if(stObj==null&&stObj.pop()==null){ return; } JSONObjectjson=stObj.pop(); Iteratorit=json.keys(); while(it.hasNext()){ Stringkey=(String)it.next(); //得到value的值 Objectvalue=json.get(key); //System.out.println(value); if(valueinstanceofJSONObject) { stObj.push((JSONObject)value); //递归遍历 JsonToMap(stObj,resultMap); } else{ resultMap.put(key,value); } } } @Test publicvoidtest3()throwsException{ StringjsonStr="{responseHeader:{status:0,QTime:0},spellcheck:{suggestions:{中国:{numFound:9,startOffset:0,endOffset:2,"+ "suggestion:[中国工商银行,中国人民,中国国际,中国农业,中国市场,中国经济,中国人,中国广播,中国文化]}},"+ "collations:{collation:中国工商银行}}}"; JSONObjectobj=newJSONObject(jsonStr); Stack stObj=newStack (); stObj.push(obj); Map resultMap=newHashMap (); JsonToMap(stObj,resultMap); Set keys=resultMap.keySet(); for(Stringkey:keys){ System.out.println(key+":"+resultMap.get(key)); } } }
总结
以上所述是小编给大家介绍的Java把json对象转成map键值对的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。