读取JSON所有元素的属性和值
程序员文章站
2022-03-20 20:57:05
...
有时候需要用JAVA将JSON字符串中的所有元系属性和值解析出来,例如:
String sql="[{\"typeNo\":\"PTMM01\",\"typeValue\":\"1\"},{\"typeNo\":\"PTMM02\",\"typeValue\":\"2\"}]";
你需要得到[typeNo:PTMM01, typeValue:1, typeNo:PTMM02, typeValue:2 ]这种属性和值对应的集合。
/** * {读取JSON字符串的所有元素的属性和值,按此原理可以改造成功能更强大的JSON解析类} * @author wenfeng.xu * */ public List convertJosnString(String str){ List retVal=new ArrayList(); String SYMBOL_OPEN_BRACE="{"; String SYMBOL_CLOSE_BRACE="}"; String SYMBOL_SINGLE_QUO_MARKS="\""; String SYMBOL_COLON=":"; String SYMBOL_COMMA=","; String SYMBOL_OPEN_BRACKET="["; String SYMBOL_CLOSE_BRACKET="]"; String PRE_SYMBOL_SINGLE_QUO_MARKS_0="PRE_SYMBOL_SINGLE_QUO_MARKS_0";//第一个单引号的索引 String PRE_SYMBOL_SINGLE_QUO_MARKS_1="PRE_SYMBOL_SINGLE_QUO_MARKS_1"; String PRE_SYMBOL_SINGLE_QUO_MARKS_2="PRE_SYMBOL_SINGLE_QUO_MARKS_2"; String PRE_SYMBOL_SINGLE_QUO_MARKS_3="PRE_SYMBOL_SINGLE_QUO_MARKS_3"; Map temMap=new HashMap(); char[] temChar=str.toCharArray(); for(int i=0;i<temChar.length;i++) { if(temMap.get(PRE_SYMBOL_SINGLE_QUO_MARKS_3)==null) { if(temChar[i]==SYMBOL_COLON.charAt(0)) { temMap.put(SYMBOL_COLON,SYMBOL_COLON); } if(temChar[i]==SYMBOL_SINGLE_QUO_MARKS.charAt(0)) { if(temMap.get(SYMBOL_SINGLE_QUO_MARKS)==null) { temMap.put(SYMBOL_SINGLE_QUO_MARKS,i); }else{//如果已经存在一个单引号 if(temMap.get(SYMBOL_COLON)==null){//如果不存在冒号 temMap.put(PRE_SYMBOL_SINGLE_QUO_MARKS_0,Integer.parseInt(temMap.get(SYMBOL_SINGLE_QUO_MARKS).toString())+1); temMap.put(PRE_SYMBOL_SINGLE_QUO_MARKS_1,i); }else{ temMap.put(PRE_SYMBOL_SINGLE_QUO_MARKS_2,Integer.parseInt(temMap.get(SYMBOL_SINGLE_QUO_MARKS).toString())+1); temMap.put(PRE_SYMBOL_SINGLE_QUO_MARKS_3,i); } temMap.remove(SYMBOL_SINGLE_QUO_MARKS); } } }else{ int index_0=Integer.parseInt(temMap.get(PRE_SYMBOL_SINGLE_QUO_MARKS_0).toString()); int index_1=Integer.parseInt(temMap.get(PRE_SYMBOL_SINGLE_QUO_MARKS_1).toString()); int index_2=Integer.parseInt(temMap.get(PRE_SYMBOL_SINGLE_QUO_MARKS_2).toString()); int index_3=Integer.parseInt(temMap.get(PRE_SYMBOL_SINGLE_QUO_MARKS_3).toString()); String attr=str.substring(index_0,index_1); String value=str.substring(index_2,index_3); retVal.add(attr+":"+value); temMap.remove(PRE_SYMBOL_SINGLE_QUO_MARKS_0); temMap.remove(PRE_SYMBOL_SINGLE_QUO_MARKS_1); temMap.remove(PRE_SYMBOL_SINGLE_QUO_MARKS_2); temMap.remove(PRE_SYMBOL_SINGLE_QUO_MARKS_3); temMap.remove(SYMBOL_COLON); } } return retVal; }
我的网店,有劳各位参观参观 http://mrs-x.taobao.com/
上一篇: 一道关于单词归类的算法题简单求解
推荐阅读
-
C#读取XML中元素和属性值的实现代码
-
C#读取静态类常量属性和值的实例讲解
-
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
-
使用python3编写程序,生成10个随机数,每个元素的值介于1到100之间,并计算所有元素的和、平均值。
-
C#读取静态类常量属性和值的实例讲解
-
读取页面元素的onclick属性值 禁止重定向 获取url重定向后Location头指定的重定向目标_html/css_WEB-ITnose
-
5.1 编写程序 从键盘上输入5个整数,并存放到一个数组中,然后计算所有元素的和,最大值、最小值以及 平均值
-
读取页面元素的onclick属性值 禁止重定向 获取url重定向后Location头指定的重定向目标_html/css_WEB-ITnose
-
jquery动态遍历Json对象的属性和值的方法
-
使用python3编写程序,生成10个随机数,每个元素的值介于1到100之间,并计算所有元素的和、平均值。