【问题标题】:Converting String array of objects into map将对象的字符串数组转换为地图
【发布时间】:2017-03-21 15:32:19
【问题描述】:

我正在使用wiki rest service 开发jquery datatable 插件。我被困住了,将类似结构的字符串转换如下

[{"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]);                     
       }

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

【问题讨论】:

标签: java json string hashmap


【解决方案1】:

看到这个,希望这对你有用 -

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;
    }

}

【讨论】:

    【解决方案2】:

    使用 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));
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多