将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 Map sismap(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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)