Java 使Jackson将单个JSON对象解释为带有一个元素的数组

有没有办法让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对象解释为带有一个元素的数组 的全部内容, 来源链接: utcz.com/qa/430119.html

回到顶部