读书人

读取JSON全部元素的属性和值

发布时间: 2012-09-10 22:20:13 作者: rapoo

读取JSON所有元素的属性和值

??? 有时候需要用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;}

?

?

?

读书人网 >JavaScript

热点推荐