【问题标题】:Convert json string to list or map [duplicate]将json字符串转换为列表或映射[重复]
【发布时间】:2014-09-16 08:43:20
【问题描述】:

我在服务器端得到一个json字符串如下

[     {"projectFileId":"8547",
       "projectId":"8235",
       "fileName":"1",
       "application":"Excel",
       "complexity":"NORMAL",
       "pageCount":"2",
       "targetLanguages":" ar-SA",
       "Id":"8547"
      },
      {"projectFileId":"8450",
       "projectId":"8235",
       "fileName":"Capacity Calculator.pptx",
       "application":"Powerpoint",
       "complexity":"NORMAL",
       "pageCount":"100",
       "targetLanguages":" ar-LB, ar-SA",
       "Id":"8450"
      }
]

我想将此字符串转换为数组列表或映射,以便我可以遍历它并获取字段值。

【问题讨论】:

  • 使用 JSON 解析器。大约有 20 个可供选择,列在 json.org 页面的底部(无论如何这是一个很好的页面,学习 JSON 语法)。
  • 该数据是一个包含两个 JSON 对象的 JSON 数组。这相当于一个包含两个 Java 映射的 Java 列表。

标签: java json gson


【解决方案1】:

您可以使用GSON library。只需使用Gson#fromJson() 方法将JSON 字符串转换为Java 对象。

示例代码:

BufferedReader reader = new BufferedReader(new FileReader(new File("json.txt")));
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<Map<String, String>>>() {}.getType();
ArrayList<Map<String, String>> data = gson.fromJson(reader, type);

// convert back to JSON string from object
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));

您可以创建一个 POJO 类,将其直接转换为 POJO 类对象的列表,以便轻松访问它。

示例代码:

class PojectDetail{
    private String projectFileId;
    private String projectId;
    private String fileName;
    private String application;
    private String complexity;
    private String pageCount;
    private String targetLanguages;
    private String Id;
    // getter & setter
}

Gson gson = new Gson();
Type type = new TypeToken<ArrayList<PojectDetail>>() {}.getType();
ArrayList<PojectDetail> data = gson.fromJson(reader, type);

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 2019-06-14
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2013-01-18
    相关资源
    最近更新 更多