将String对象数组转换为map

时间:2017-03-21 15:32:20

标签: java json string hashmap

我正在使用jquery datatable处理wiki rest service插件。我坚持,转换字符串结构如下

[{"name":"sEcho","value":1},{"name":"iColumns","value":5}]

进入对象的地图。 喜欢::

{"sEcho"=1, "iColumns"=5, "bSearchable_4"=true, "sSearch_3"="", "bRegex_3"=false, "mDataProp_3"=3, "sSearch_1"="", "bSortable_0"=true, "bRegex_1"=false}

问题是,有没有通用的方法或库可以做?

我尝试了休息 -

       queryJson = queryJson.replace("[", "");
       queryJson = queryJson.replace("]", "");
       String[] params =  queryJson.split("},");

       Map<String, Object> paramMap = new HashMap<String, Object>();

       for(int i=0;i<params.length-1;i++){
           String[] curObj = params[i].split(":");
           String[] keyObj = curObj[1].split(",");                     
           paramMap.put(keyObj[0], curObj[2]);                     
       }

获取输出。但我认为可能有更好的方法。 请建议我使用任何库或通用方法来执行此操作。  谢谢

2 个答案:

答案 0 :(得分:0)

看到这一点,希望这对你有用 -

import java.util.HashMap;
import java.util.Map;

import com.google.gson.Gson;

public class Stack {

    public static void main(String[] args) {

        String jsonResponse = "[{\"name\":\"sEcho\",\"value\":1},{\"name\":\"iColumns\",\"value\":5}]";

        Gson gson = new Gson();

        //Parse json into a JsonResponseData object.
        JsonResponseData[] jsonResponseData = gson.fromJson(jsonResponse, JsonResponseData[].class);

        Map<String, Object> paramMap = new HashMap<String, Object>();

        for(JsonResponseData data : jsonResponseData){
            paramMap.put(data.getName(), data.getValue());
        }

        System.out.println(paramMap);
    }
}

public class JsonResponseData {

    private String name;

    private Object value;

    public JsonResponseData(String name, Object value) {
        super();
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

}

答案 1 :(得分:0)

使用 JSONObject 这样的东西。

HashMap<String, String> paramMap = new HashMap<String, String>();
for (int i = 0; i < params.length(); i++) {
   JSONObject jObj = params.optJSONObject(i);
   Iterator it = jObj.keys();
   while (it.hasNext()) {
      String n = it.next();
      paramMap.put(n, jObj.getString(n));
   }
}