将list字符串转ArrayList
public static ArrayList
效果:
输入[{“prid”:7,“uid”:[{“cid”:132,“data”:“datatext”},{“cid”:132,“data”:“datatext”}],“sum”:“3999”,“ptype”:“否”,“datetime”:“2022-05-12 17:40:07”},{“prid”:8,“uid”:{“cid”:132,“data”:“datatext”},“sum”:“150”,“ptype”:“是”,“datetime”:“2022-05-12 17:40:07”},{“prid”:9,“uid”:null,“sum”:“3999”,“ptype”:“否”,“datetime”:“2022-05-12 18:26:56”}]
输出
返回值是三个map的集合,因为键值是Object,没法get所以保留json格式,可再次调用此方法或转map方法转为所需的list或map
json字符串转map(需下面两个方法)
public static Mapsismap(String param) { Map map = new HashMap<>(); StringBuffer key=new StringBuffer(); StringBuffer value=new StringBuffer(); boolean k=false; boolean v=false; boolean s=false; char[] charList = param.toCharArray(); for (int i = 0; i < charList.length; i++) { char c = charList[i]; if (c == '"') { if (charList[i+1]==':'){ if (charList[i+2]=='{'){ int index=rueurnindex(new StringBuffer(param.substring(i+2,param.length()))); map.put(key.toString(),param.substring(i+2,i+2+index));//准备将此键值对添入map key.setLength(0); value.setLength(0); i=i+2+index; continue; } if (charList[i+2]=='['){ int index=rueurnindexz(new StringBuffer(param.substring(i+2,param.length()))); map.put(key.toString(),param.substring(i+2,i+2+index));//准备将此键值对添入map key.setLength(0); value.setLength(0); i=i+2+index; continue; } else { k=false;//不再拿key v=true;//准备拿value i++; continue; } }else if (charList[i+1]=='}'){ v=false;//不再拿value map.put(key.toString(),value.toString());//准备将此键值对添入map key.setLength(0); value.setLength(0); }else { if (!v) k=true;//准备拿key continue; } }else if(c==','&&charList[i+1]=='"'){ v=false;//不再拿value map.put(key.toString(),value.toString());//准备将此键值对添入map key.setLength(0); value.setLength(0); } if (k) key.append(c); if (v) value.append(c); } return map; }
效果:
输入{“prid”:7,“uid”:[{“cid”:132,“data”:“datatext”},{“cid”:132,“data”:“datatext”}],“sum”:“3999”,“ptype”:“否”,“datetime”:“2022-05-12 17:40:07”}
输出
数据单纯测试用
求第一个’{‘字符所对应’}'字符的位置
public static int rueurnindex(StringBuffer strb){
//查到一个'{'记作1,一个'}'记作-1,当sum=0时最后一个'}'位置返回
int sum=0;
int i=0;//'{'位置
int k=0;//'}'位置
int p=0;//删掉的符号数
do {
i=strb.indexOf("{");
k=strb.indexOf("}");
if (i
求第一个’[‘字符所对应’]'字符的位置
public static int rueurnindexz(StringBuffer strb){
//查到一个'['记作1,一个']'记作-1,当sum=0时最后一个']'位置返回
int sum=0;
int i=0;//'['位置
int k=0;//']'位置
int p=0;//删掉的符号数
do {
i=strb.indexOf("[");
k=strb.indexOf("]");
if (i 


