java - 让 Jackson 将单个 JSON 对象解释为具有一个元素的数组

标签 java json jackson

有没有办法让 Jackson 将单个 JSON 对象解释为具有一个元素的数组,反之亦然?

例如,我有 2 种稍微不同的 JSON 格式,我都需要映射到同一个 Java 对象:

格式A(一个元素的JSON数组):

points : [ {
    date : 2013-05-11
    value : 123
}]

格式 B(JSON 对象,是的,我知道它看起来“错误”,但这是我得到的):

points : {
    date : 2013-05-11
    value : 123
}

以上两者都应转换为的目标 Java 对象:

//Data.java 
public List<Point> points;
//other members omitted

//Point.java
class Point {
    public String date;
    public int value;
}

目前,只有 A 可以正确解析为 Data。我想避免直接篡改 JSON 本身。 Jackson 中是否有一些配置我可以篡改以使其接受 B

最佳答案

试试 DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY - 它应该适合你。

例子:

final String json = "{\"date\" : \"2013-05-11\",\"value\" : 123}";

final ObjectMapper mapper = new ObjectMapper()
        .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
final List<Point> points = mapper.readValue(json,
        new TypeReference<List<Point>>() {});

关于java - 让 Jackson 将单个 JSON 对象解释为具有一个元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17003823/

相关文章:

unix - Java 程序无法在 Unix 机器上启动

java - 文档返回 null (Android)

javascript - 在javascript中转义双引号

json - Jackson2 多对多反序列化

java - Jackson @JsonRawValue 用于 Map 的值

java - 修改 Enunciate 生成的配置文件以使用 CXF 的最新 jackson 库

java - Eclipselink 实体持续存在问题

java - 在 Java 中使用递归反转字符串

java - 将json数组序列化为java对象

Android,SQLITE : Failed to read row 0, CursorWindow 第 11 列,有 1 行、11 列