json字符串轉java的Map<String,String>
阿新 • • 發佈:2018-03-23
json字符串轉成javamappackage com.iqc.app.qc.common.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JsonToMap {
public static Map<String,String> toMap(String jsonString){ ArrayList<String> listKey = new ArrayList<>(); ArrayList<String> listValue = new ArrayList<>(); int index = 0; readKey(listKey,listValue,index,jsonString); Map<String, String> map = new HashMap<>(); for(int i = 0 ; i<listKey.size();i++){ String key = null; String value = null; if(listKey.get(i).charAt(0) == ‘"‘){ String s = listKey.get(i); key = s.substring(1,s.length()-1); }else { key = listKey.get(i); } if(listValue.get(i).charAt(0) == ‘"‘){ String s = listValue.get(i); value = s.substring(1,s.length()-1); }else { value = listValue.get(i); } map.put(key,value); } return map; } public static void readKey(List<String> listKey,List<String> listValue, int index , String jsonString){ int flag = 0; StringBuilder stringBuilder = new StringBuilder(); for(int i = index ;i<jsonString.length();i++){ char charAt = jsonString.charAt(i); if(charAt == ‘"‘){ flag = flag + 1; } if(flag == 1){ stringBuilder.append(jsonString.charAt(i)); } if(flag == 2){ listKey.add(stringBuilder.toString().substring(1,stringBuilder.length())); readValue(listKey,listValue,i+1,jsonString); return; } } } public static void readValue(List<String> listKey,List<String> listValue,int index , String jsonString){ int flag1= 0; int flag2 = 0; int flag3 = 0; int flag4 = 0; StringBuilder stringBuilder = new StringBuilder(); for(int i = index ;i<jsonString.length();i++){ char charAt = jsonString.charAt(i); if(charAt == ‘"‘){ flag1 = flag1 + 1; } if(charAt == ‘,‘){ flag2 = flag2 + 1; } if(charAt == ‘{‘){ flag3 = flag3 + 1; } if(charAt == ‘}‘){ flag4 = flag4 + 1; } stringBuilder.append(jsonString.charAt(i)); if(flag3 > 0 && flag4 == flag3 ){ listValue.add(stringBuilder.toString().substring(1,stringBuilder.length())); readKey(listKey,listValue,i,jsonString); return; } if(flag3 == 0 && flag1 == 2 ){ listValue.add(stringBuilder.toString().substring(1,stringBuilder.length())); readKey(listKey,listValue,i+1 ,jsonString); return; } if(flag3 == 0 && flag1 == 2){ listValue.add(stringBuilder.toString().substring(1,stringBuilder.length())); readKey(listKey,listValue,i+1 ,jsonString); return; } if(flag3 == 0 && flag1 == 0 && (flag2 == 1 || flag4 == 1)){ listValue.add(stringBuilder.toString().substring(1,stringBuilder.length()-1)); readKey(listKey,listValue,i+1 ,jsonString); return; } } }
}
json字符串轉java的Map<String,String>