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);
MapresultMap=newHashMap();
JsonToMap(stObj,resultMap);
Setkeys=resultMap.keySet();
for(Stringkey:keys){
System.out.println(key+":"+resultMap.get(key));
}
}
/**
*@Author:sks
*@Description:把json对象数据存储在map以键值对的形式存储,只存储叶节点
*@Date:
*/
privatestaticvoidJsonToMap(StackstObj,MapresultMap)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);
StackstObj=newStack();
stObj.push(obj);
MapresultMap=newHashMap();
JsonToMap(stObj,resultMap);
Setkeys=resultMap.keySet();
for(Stringkey:keys){
System.out.println(key+":"+resultMap.get(key));
}
}
}
总结
以上所述是小编给大家介绍的Java把json对象转成map键值对的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。