如何在java中实现地图列表的字符串转换

时间:2015-04-27 13:53:42

标签: java json

如何将JSON字符串转换为下面给出的格式并返回JSON字符串。

List<Map<String, String>> variables =new ArrayList<>();

我试着寻找这个。我能找到的只是将列表转换为数组然后转换为字符串。但是使用

TypeA[] array = a.toArray(new TypeA[a.size()]);

在这里似乎不可行。

3 个答案:

答案 0 :(得分:3)

List<Map<String,String>>转换为JSON字符串:

public String listmap_to_json_string(List<Map<String, String>> list)
{       
    JSONArray json_arr=new JSONArray();
    for (Map<String, String> map : list) {
        JSONObject json_obj=new JSONObject();
        for (Map.Entry<String, String> entry : map.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            try {
                json_obj.put(key,value);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }                           
        }
        json_arr.put(json_obj);
    }
    return json_arr.toString();
}

或者只是使用谷歌gson库:

public String listmap_to_json_string(List<Map<String, String>> list){
    // Use toJson method to serialize list to Json
    return  new GsonBuilder().setPrettyPrinting().create().toJson(list);
}

将JSON字符串转换为List<Map<String,String>>

public List<Map<String, String>> json_string_to_listmap(String json){   
    Gson gson = new Gson();
    Type type = new TypeToken<ArrayList<Map<String, String>>>() {}.getType();
    // Use fromJson method to deserialize json into an ArrayList of Map
    return gson.fromJson(json , type);
}

有关更多信息,请查看此link

答案 1 :(得分:0)

确实,您应该更新您的问题以提供更多详细信息。同时,根据我在帖子中的理解,我建议你从org.codehaus.jackson.map查看ObjectMapper类。

您可以使用

轻松获得所需类型的JSON转换
// string in json format
String json;
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, TypeA.class);

答案 2 :(得分:0)

此代码显示如何将json字符串转换为List<Map<String,String>>

ObjectMapper objectMapper = new ObjectMapper();
try {
    TypeReference < List < Map < String, String >>> typeReference = new TypeReference < List < Map < String, String >>> () {

    };
    List < Map < String, String >> res = objectMapper.readValue("[{\"size\":\"100x200\"}]", typeReference);
    System.out.println("type: " + typeReference.getType());
    for (Map < String, String > map: res) {
        for (String key: map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
    }

} catch (IOException e) {
    e.printStackTrace();
}