【问题标题】:Convert JSON Array of Objects to List<String>将 JSON 对象数组转换为 List<String>
【发布时间】:2018-09-27 06:30:17
【问题描述】:

我有一段 JSON 格式的选择数据,我想将其转换为 Java ArrayList。

String q = "SELECT attributes FROM common_attr_test";
PreparedStatement preparedStatement = (PreparedStatement) conn.prepareStatement(q);
preparedStatement.execute();
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
    valueAttributes = rs.getString("attributes");
} 

JSONObject obj=(JSONObject)JSONValue.parse(valueAttributes); 
JSONArray arrOne=(JSONArray)obj.get("1"); 
System.out.println(arrOne);

从代码中,我得到以下结果:

[{"entry":"1","count":1},{"entry":"2","count":1},{"entry":"3","count":1}]

我尝试使用编码

ArrayList<String> listOne = new ArrayList<String>();

if (arrOne != null) { 
    int len = arrOne.size();
    for (int i=0;i<len;i++){ 
        listOne.add(arrOne.get(i).toString());
    } 
} 
System.out.println(arrOne);
System.out.println("\nlistOne:"+listOne);

并得到结果:

[{"entry":"2","count":3}]

我的问题是如何将结果放入 Java 中的 ArrayList 中,如下所示:

[(1,1),(2,1),(3,1)]

【问题讨论】:

  • 你使用的是什么 JSON 库?
  • 我正在使用 json-simple。
  • 尝试使用 gson 或 jackson 库,这会让你的事情变得更容易

标签: java arrays json list json-simple


【解决方案1】:

您需要检查您的JSONArray,将每个元素转换为JSONObject,并从每个元素中提取entrycount 值,然后将它们制成一个字符串并添加到您的列表中:

if (arrOne != null) {
    JSONObject entryCountJson;
    String entry, count;
    for (Object o : arrOne) {
        entryCountJson = (JSONObject) o;
        entry = String.valueOf(entryCountJson.get("entry"));
        count = String.valueOf(entryCountJson.get("count"));
        listOne.add("(" + entry + "," + count + ")");
    }
}
System.out.println("arrOne: "+arrOne);
System.out.println("listOne: "+listOne);

这个输出:

arrOne: [{"entry":"1","count":1},{"entry":"2","count":1},{"entry":"3","count":1}]
listOne: [(1,1), (2,1), (3,1)]

【讨论】:

    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 2017-08-15
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多