ArrayList<HashMap<String,String>> 到 JSON 对象 Java

Posted

技术标签:

【中文标题】ArrayList<HashMap<String,String>> 到 JSON 对象 Java【英文标题】:ArrayList<HashMap<String,String>> to JSON object Java 【发布时间】:2016-06-14 21:18:27 【问题描述】:

我想创建一个字符串如下。

[ "Name":"David",
    "Age":"30"
  ,
  "Name":"Max",
   "Age":"20"
  
]

我们如何在 Java 中使用 ArrayList&lt;HashMap&lt;String,String&gt;&gt; 和 JSON 创建这个字符串?

【问题讨论】:

此链接对您有帮助:***.com/questions/12155800/… json.org/javadoc/org/json/JSONObject.html 不工作。你能解释一下吗?我是java新手。我有 ArrayList> 的所有数据。我只想从上面准备一个 JSON 字符串。另请注意,没有 JSON 密钥 @creative Pro 你试过我的解决方案了吗 【参考方案1】:

尝试如下

public String listmap_to_json_string(List<HashMap<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();

【讨论】:

【参考方案2】:

My JSON library 完全适合您的用例。例如:

ArrayList<HashMap<String,String>> outer = new ArrayList<HashMap<String,String>>();

HashMap<String,String> inner = new HashMap<String,String>();
inner.put("Name", "David");
inner.put("Age", "30");
outer.add(inner);

inner = new HashMap<String,String>();
inner.put("Name", "Max");
inner.put("Age", "20");
outer.add(inner);

//----------

import io.nayuki.json.Json;
String jsonText = Json.serialize(outer);
System.out.println(jsonText);

输出文本:

["Age": "30", "Name": "David", "Age": "20", "Name": "Max"]

【讨论】:

【参考方案3】:

试试Jackson Mapper 你可以阅读一些关于它的tutorials。 您可以通过这种方式使用 Jackson 编写代码:

ObjectMapper mapper = new ObjectMapper();
jsonString = mapper.writeValueAsString(listOfMap);

【讨论】:

以上是关于ArrayList<HashMap<String,String>> 到 JSON 对象 Java的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自 Arraylist<Hashmap<String,String>> 的 bundle 获取使用 putserializable 传递的值

java编程hashmap,arraylist

Java中HashMap,HashSet是线程安全的吗,ArrayList是线程不安全的那如何避免其出异常?

在Hashmap中获取arrayList的大小

当Arraylist增长时,带有ArrayList键的HashMap无法找到它

如何将 HashMap<String, ArrayList<String>> 存储在列表中?