1. 程式人生 > >json字符串轉java的Map<String,String>

json字符串轉java的Map<String,String>

json字符串轉成javamap

package 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>