java - 将 JSON 数组解析为列表

标签 java json

将这个 json 数组解析为列表的最快方法是什么?

[
    ["FundRequest"],
    ["nOS"],
    ["NEX"],
    ["DREP"],
    ["ChromaWay"],
    ["Jura"],
    ["Origo"],
    ["Phantasma"],
    ["NuCypher"],
    ["Oasis Labs"]
]

它是由以下代码生成的:

private void getNames(String spreadsheetUrl) {
    JSONObject json = readJsonFromUrl(spreadsheetUrl);
    String result = json.get("values").toString();
    log.debug("Found: {}", result);
}

输出来自以下 json 响应:

{
  "range": "Frontpage!E6:E15",
  "majorDimension": "ROWS",
  "values": [
    [
      "FundRequest"
    ],
    [
      "nOS"
    ],
    [
      "NEX"
    ],
    [
      "DREP"
    ],
    [
      "ChromaWay"
    ],
    [
      "Jura"
    ],
    [
      "Origo"
    ],
    [
      "Phantasma"
    ],
    [
      "NuCypher"
    ],
    [
      "Oasis Labs"
    ]
  ]
}

最佳答案

您可以使用像 GSON 这样的库:

使用maven安装:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.2.4</version>
</dependency>

编辑:

如果你想解析这个:

{
  "range": "Frontpage!E6:E15",
  "majorDimension": "ROWS",
  "values": [
    [
      "FundRequest"
    ],
    [
      "nOS"
    ],...

作为 java 对象,然后为您的 json 实体创建一个包装类:

public class Wrapper {

    private String range;
    private String majorDimension;
    private List<?> values;

    /**
     * @return the range
     */
    public String getRange() {
        return range;
    }
    /**
     * @return the values
     */
    public List<?> getValues() {
        return values;
    }
    /**
     * @param values the values to set
     */
    public void setValues(List<?> values) {
        this.values = values;
    }
    /**
     * @return the majorDimension
     */
    public String getMajorDimension() {
        return majorDimension;
    }
    /**
     * @param majorDimension the majorDimension to set
     */
    public void setMajorDimension(String majorDimension) {
        this.majorDimension = majorDimension;
    }
    /**
     * @param range the range to set
     */
    public void setRange(String range) {
        this.range = range;
    }
}

然后使用 GSON,您可以将 Json 字符串解析为包装对象:

Gson gson = new GsonBuilder().create();
Wrapper w = gson.fromJson(jsonString, Wrapper.class);

检查这个:http://www.javacreed.com/simple-gson-example/

编辑:

如果你想解析这个:

[
    ["FundRequest"],
    ["nOS"],
    ["NEX"],
    ["DREP"],
    ["ChromaWay"],
    ["Jura"],
    ["Origo"],
    ["Phantasma"],
    ["NuCypher"],
    ["Oasis Labs"]
]

作为数组的数组,然后使用 gson 你可以这样做:

    List<?> arr = gson.fromJson("[[\"FundRequest\"],[\"nOS\"],...]", List.class);
    System.out.println(arr);

println 应打印: [[资金请求]、[nOS]、...]

数组的 json 数组应被解析为列表的列表

希望这有帮助

关于java - 将 JSON 数组解析为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51895342/

相关文章:

java - 如何删除重复的 XML 声明

php - 使用 PHP 回显 JSON 响应

java spring boot将字符串数组作为json中的参数传递给ajax调用

json - 在启动时将 json 文件导入服务器代码中的集合

java - 空虚是什么意思?

java - Hibernate Java Web 应用程序

java - 使用移位运算符生成唯一数字,并与 java 中的按位 & 运算符进行验证

android - map View 使用 google Directions API 绘制方向 - 解码多段线

c# - 在一个 Json 中创建多个表而不使用 JArray?

java - 在 map reduce 中使用自定义分区程序应该遵循哪个逻辑来解决这个问题