【问题标题】:Java Arraylist Data extractionJava Arraylist 数据提取
【发布时间】:2011-08-01 08:15:40
【问题描述】:

您将如何提取数据如下:

我想从这个数组列表中提取:

[{itemname=Original, number=12}, {itemname=BBQ, number=23}, {itemname=CatchUp, number=23}]

这个数组:

{"Original":12,"BBQ":23,"CatchUp":23}

提前致谢!这是用于生成哈希图的代码:

ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
for (int i = 0; i<7;i++) {
 HashMap<String,String> map = new HashMap<String,String>();
  map.put("itemname",chips[i]);
  map.put("number",chipentry[i]);
  list.add(map);
 }

【问题讨论】:

  • 你能发布任何代码来解释你是如何创建ArrayList的吗?
  • 列表的内容究竟是什么,数组的内容应该是什么?在Java对象方面,请!
  • 您的“数组”似乎包含您使用冒号指定的复合元素。你到底什么意思?您的阵列将使用什么类型?还是您真的在谈论地图?
  • 对不起伙计们,是的 - 这是一个哈希图的数组列表,我想将它转换为 JSON,因为 c0mrade 推断出

标签: java json arraylist


【解决方案1】:

看起来你想将它转换为 Json,使用 google gson http://code.google.com/p/google-gson/ 非常简单

“提供简单的 toJson() 和 fromJson() 方法将 Java 对象转换为 JSON,反之亦然”

这就是我的意思:

Gson gson = new Gson();
gson.toJson(map); //where map is your map object

【讨论】:

  • 谢谢 c0mrade。我最终创建了一个新的 JSONObject,因为它没有得到我想要的完全准确的格式,但它帮助我弄清楚了。欢呼
【解决方案2】:

感谢您的提示 - 我已更改为以下代码:

  ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
  Gson gson = new Gson();
  for (int i = 0; i<7;i++) {
     HashMap<String,String> map = new HashMap<String,String>();
     map.put("itemname",chips[i]);
     map.put("number",chipentry[i]);
     list.add(map);
     System.out.println(gson.toJson(map));
  }

结果是http://imgur.com/E7uds.png

我导入了 com.google.gson.Gson,还有什么我遗漏的吗?请原谅我的新手,感谢您的帮助!

【讨论】:

  • 我已经编辑了你的答案,这将在你的数组列表中打印每个转换为 json 的地图
  • 从这里看起来它正在生成 7 个 JSON 对象而不是一个 - 有没有办法将 JSON 对象组合在一起并存储在一个变量中?
  • 是的,将整个列表转换为 json,gson.toJson(list);
  • @c0mrade:谢谢,现在最后一件事 - 而不是获得所需的格式 [{"Original":12,"BBQ":23,"CatchUp":23}] 我得到了这个: [{"itemname":"Original","number","12"},{"itemname":"BBQ","number":"23"},{"itemname":"CatchUp","number": “23”}]。我需要对代码进行哪些更改才能获得所需的格式?
【解决方案3】:

要按预期提取数据,您可以使用 Jackson JSON 处理器。它允许您轻松地读取和写入 JSON。你可以按照他们的教程here

首先你必须下载他们提供的相关jar文件(2个文件)。

所以下面的代码sn-p应该可以解决你的问题,结果写入jsonResult.json文件。

    String[] chips = {"Original", "BBQ", "CatchUp"};
    String[] chipentry = {"12", "23", "23"};

    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    for (int i = 0; i < 3; i++) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("itemname", chips[i]);
        map.put("number", chipentry[i]);
        list.add(map);
    }

    ObjectMapper mapper = new ObjectMapper();
    Map<String, Object> untyped = new HashMap<String, Object>();

    untyped.put("result", list);
    mapper.writeValue(new File("jsonResult.json"), untyped);

以下是文件的输出,

{"result":[{"itemname":"Original","number":"12"},{"itemname":"BBQ","number":"23"},{"itemname":"CatchUp","number":"23"}]}

【讨论】:

  • 谢谢Chathuranga,这不是我想要的,但它帮助了我。我只能接受一个答案,但再次感谢。
  • :) 没关系...无论如何,如果您认为它很棒...。如果您愿意,您也可以分享您的最终结果...它可以帮助其他遇到过的人同样的问题......干杯!
猜你喜欢
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
相关资源
最近更新 更多