【问题标题】:Convert ArrayList of HashMap into JSON String [duplicate]将HashMap的ArrayList转换为JSON字符串[重复]
【发布时间】:2016-06-28 12:09:03
【问题描述】:

我想将ArrayList<Hashmap<String,String>> 转换为JSONArray。我用过

JSONArray array = new JSONArray(array_list);

但它不能正常工作它返回

["{image=2130837526, category=Chairs, Quantity=1, price=400, name=chair, prodId=34}","{image=2130837566, category=Mirrors, Quantity=1, price=3000, name=La Fonda, prodId=35}"]

它应该返回

cartitems=[{"name":"Chair","price":"1001","prodId":"2","category":"Chairs","image":"2130837519","Quantity":"1"},{"name":"Baxton Studio Club Chair","price":"4545","prodId":"5","category":"Chairs","image":"2130837521","Quantity":"1"}]

【问题讨论】:

  • 第一个 JSON 块只是一个字符串数组...您确定可以像这样将 Arraylist 传递给 JSONArray 的构造函数吗?看起来它只是对列表的每个元素进行字符串化
  • @cricket_007 我不确定,因为它适用于简单的 ArrayList 但不适用于 ArrayList>
  • 你为什么不在这里发布你的Arraylist?
  • 如果我不得不猜测,任何类型,如 int、string 和 boolean 都可以用于从列表构造 JSONArray,因为它们是 JSON 数据类型。您需要做的是遍历您的 Arraylist,并从每个 Hashmap 创建一个新的 JsonObject,然后将每个添加到 JSONArray

标签: java android arraylist hashmap


【解决方案1】:

有很多方法可以实现这一目标。我将解释两种方式:

你可以这样做:

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

HashMap<String, String> data1 = new HashMap<String, String>();
data1.put("image", "2130837526");
data1.put("category", "Chairs");
data1.put("Quantity", "1");

HashMap<String, String> data2 = new HashMap<String, String>();
data2.put("image", "2130837566");
data2.put("category", "Mirrors");
data2.put("Quantity", "2");

dataMap.add(data1);
dataMap.add(data2);


List<JSONObject> jsonObj = new ArrayList<JSONObject>();

for(HashMap<String, String> data : dataMap) {
    JSONObject obj = new JSONObject(data);
    jsonObj.add(obj);
}

JSONArray test = new JSONArray(jsonObj);

System.out.println(test.toString());

或者你可以使用 Jackson 对象映射器:

Download Jackson Core

Download Jackson Mapper

将外部库添加到 Eclipse 项目

Adding a library/JAR to an Eclipse Android project

Java 代码

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

HashMap<String, String> data1 = new HashMap<String, String>();
data1.put("image", "2130837526");
data1.put("category", "Chairs");
data1.put("Quantity", "1");

HashMap<String, String> data2 = new HashMap<String, String>();
data2.put("image", "2130837566");
data2.put("category", "Mirrors");
data2.put("Quantity", "2");

dataMap.add(data1);
dataMap.add(data2);

ObjectMapper objectMapper = new ObjectMapper();

String json = objectMapper.writeValueAsString(dataMap);

System.out.println(json);

两个选项都将打印:

[{"image":"2130837526","category":"Chairs","Quantity":"1"},{"image":"2130837566","category":"Mirrors","Quantity":"2"}]

【讨论】:

  • 我需要为 Maven 代码编写的地方。其实我是android编程的新手@andrebonna
  • 你的IDE是Android Studio吗?
  • 向 Android Studio 添加外部库:stackoverflow.com/questions/16608135/…
  • 我正在使用 Eclipse IDE @andrebonna
  • 好的,我改变了答案来帮助你解决eclipse
猜你喜欢
  • 2020-07-26
  • 2011-12-09
  • 2014-03-10
  • 1970-01-01
  • 2017-04-10
  • 2012-01-15
  • 2021-04-21
  • 1970-01-01
相关资源
最近更新 更多