当前位置: 首页 > 面试题库 >

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

阎嘉荣
2023-03-14
问题内容

有没有办法让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>>() {});


 类似资料:
  • 问题内容: 有没有办法让Jackson将单个JSON对象解释为具有一个元素的数组,反之亦然? 例如,我有2种略有不同的JSON格式,我需要两者都映射到相同的Java对象: 格式 A (带有一个元素的JSON数组): 格式 B (JSON对象,是的,我知道它看起来“错误”,但这就是我给的): 以上两种都应转换为的目标Java对象: 当前,只有 A 可以正确解析为Data。我想避免直接篡改JSON本身

  • 有没有办法让Jackson将单个JSON对象解释为一个包含一个元素的数组,反之亦然? 例如,我有两种稍有不同的JSON格式,我需要两者都映射到同一个Java对象: 格式(包含一个元素的JSON数组): 格式B(JSON对象,是的,我知道它看起来“错了”,但我得到的是): 目标Java以上两者都应转换为的对象: 目前,只有A将正确解析为数据。我希望避免直接篡改JSON本身。Jackson中是否有一些

  • 我正在用Jersey/Java创建一个REST服务器,我发现了一个奇怪的行为。 我在服务器上有一个方法,它将对象数组作为Json返回 代码被正确执行,数据被返回给客户机(一个jQuery ajax调用)。问题是,如果“结果”数组有一个或多个元素,则返回数据的格式会改变。 用一个元素响应: 回应有两个要素: 如您所见,在第一种情况下,返回对象的“fileInfo”属性的值是一个对象,在第二种情况下,

  • 前言:众所周知,将指针1放在数组末尾是合法且定义明确的: 此指针可用于比较,这有助于C样式数组(或者更准确地说,其中的指针)与采用迭代器的标准库例程兼容,例如(Live Demo): 标准(C 03参考)支持其合法性和明确性: 5/将具有整型的表达式加到指针上或从指针上减去时,结果为指针操作数的类型。如果指针操作数指向数组对象的某个元素,并且数组足够大,则结果指向与原始元素偏移的元素,从而得到的数

  • 问题内容: 谁能解释为什么在Python中将单个元素元组解释为该元素? 和 他们为什么不只是将元组打印为? 请参阅以下示例: 问题答案: 单个元素元组永远不会被视为包含的元素。括号对分组最有用,而不是对元组的创建。逗号会这样做。 他们为什么不只将(1,)打印为(1)? 可能是因为打印内置容器类型提供了一种表示形式,可用于通过表示重新创建容器对象,例如: 的docs在此方面提供了一些清晰度: 如果可

  • 问题内容: 我有一个看起来像这样的json响应: 我有两个类:Teste和Parameters 我的问题是:有没有一种方法可以让Gson理解某些json属性应该进入Parameters类,还是唯一的方法是“手动”解析此属性? 编辑 好吧,只是为了让我在@MikO的答案中的评论更具可读性: 我将对象列表添加到json输出中,因此json响应应如下所示: Deserializer类将如下所示: 并做: