【问题标题】:Jackson: unmarshall array of array杰克逊:解组数组数组
【发布时间】:2020-04-28 10:09:26
【问题描述】:

我有以下 JSON 片段(感觉很恐怖)

[
 ["X", "Y", 0.00010919, 0, null, null, null],
 ["X", "Y", 0.00210919, 0, null, null, null],
 ["A", "B", 0.00310919, 0, null, null, null]
]

我很难让 Jackson 解析它,更不用说如何通过 POJO 连贯地公开它了。

有什么建议吗?

【问题讨论】:

  • 你尝试过什么以及你想要达到什么目的?

标签: java arrays json jackson


【解决方案1】:

您可以简单地使用Array[Object] 解析数组,可以将它们类型转换为ArrayList<Object>

import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

public class ArrayOfArray {

    public static void main(String[] args) throws IOException {
        Object[] objArr = new Object[0];
        String jsonFilePath = "src/main/resources/arrayOfArray.json"; // JSON File Path
        Object[] mySystems = new ObjectMapper().readValue(new File(jsonFilePath), objArr.getClass());

        for (int i = 0 ; i < mySystems.length;i++) {
            ArrayList<Object> list = (ArrayList<Object>)mySystems[i];
            for (Object obj :list) {
                System.out.print(obj + " ");
            }
            System.out.println();
        }

    }
}

如果您需要直接通过映射器将 JSON 映射到 POJO,那么它们应该包含一些结构类型的 JSON。 例如

[
 { "field" : "X", "field1" : "Y", ...],
 {"field" : "X", "field1" : "Y", ...],
...
]

可以直接映射到Array[CustomBean]

class CustomBean {
 String field;
 String field1;
...
}

【讨论】:

  • 这为我指明了正确的方向,谢谢。我的标题有点错误。它实际上是一个列表。
  • 如果它解决了你的问题,请考虑接受@DanF的答案
猜你喜欢
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 2012-10-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多