我有一些要映射到我的Box
对象的JSON :
{
"created_date": "2015-11-11",
"generation_date": "2015-11-12T20:35:00+0000",
"values": {
"MORNING": 13,
"EVENING": 18,
"NOON": 446,
"NIGHT": "0.60.0"
},
"id": "12345"
}
我的Box
对象看起来像:
public class Box {
@JsonProperty
Map<String, Object> json;
public Box() {
// Blank
}
// Getter and setter for `json` field
}
这是我的代码:
Box box = null;
// `JSON_STRING` below refers to a string of the above JSON
metricsPacket = new ObjectMapper().readValue(JSON_STRING, Box.class);
我不断收到此错误:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "created_date" (class com.me.Box), not marked as ignorable (one known property: "json"])
我在网上找到的所有示例都只是将JSON反序列化为带有少量String
或int
成员变量的简单POJO
。如何正确地将JSON映射到我的json
字段并使其行为正确?
我以为一旦工作成功json.get("id")
就会返回,12345
而json.get("values")
会返回另一个Map<String, Object>
(或Map<String, String>
)。我对使用Jackson还是很陌生,所以这甚至可能都不是我想要做的正确方法。任何帮助,将不胜感激!
首先,解决您的问题。您正在尝试将JSON反序列化为一个在JSON字符串中不包含字段的类,因此它无法找到这些字段并返回异常。
您也可以执行以下操作:
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.readValue(JSON_STRING, new TypeReference<Map<String, String>>(){});
box.setJsonMap(map);
在哪里盒子会有一个设置器来设置json映射
或者,您可以将所有字段添加到Box POJO中,然后使用GSON简化此操作!
例如Json->对象
Gson gson = new Gson();
Box box = gson.fromJson(JSON_STRING, Box.class);
例如对象->杰森
Gson gson = new Gson();
String str = gson.toJson(mBox); //mBox is some box object
GSON将填充框内的所有字段,以匹配在JSON字符串中找到的键,值对。如果您不想这样做,则忽略它,但这是另一种选择!
问题内容: 我有一个这样的模型: 例如,我从远程获取以下JSON: 当我反序列化此JSON时,and 变量将获得正确的值。但是,我不想解释变量的内容。相反,我希望它是以下字符串: 之后,我将自己解释。我如何获得这个值? 问题答案: Jackson问题596是为原始问题中描述的所需功能而创建的。如果要实施,请投票。 当前可用的解决方案是实现自定义反序列化处理。
问题内容: 我有一个Java类,我对从JSON反序列化感兴趣。我已经配置了一个特殊的MixIn类,以帮助我进行反序列化。只有和实例变量与适当的getter和setter方法相结合。看起来像这样: 在我的测试客户端中,我执行以下操作,但是在编译时它当然不起作用,因为与类型不匹配有关。 我知道我可以通过创建一个仅包含一个“响应”对象的方法来缓解此问题,但是随后我将不得不为我想返回的每种类型创建这些有点
我正在调用一个返回JSON的endpoint,它看起来像这样(在Postman中): 此请求返回的Content-Type头是(与通常的 类来自外部库(编写这个endpoint的人)。无论如何,当我试图通过< code > rest template . exchange()调用这个endpoint时,Jackson都无法将这个JSON反序列化为一个有效的< code>Result类。我正在这样做
问题内容: 我有一个这样的模型: 例如,我从远程获取以下JSON: 当我反序列化此JSON时,and 变量将获得正确的值。但是我不想解释我变量的内容。相反,我希望它是以下字符串: 之后,我将自己解释。我如何获得的价值? 问题答案: Jackson问题596是为原始问题中描述的所需功能而创建的。如果要实施它,请投票。 当前可用的解决方案是实现自定义反序列化处理。 另外,如何使用Jackson将原始J
我有一个这样的结构: 我想使用流行的Jackson库反序列化为这样的类: 其中,属性中的每个条目都成为类映射中的键/值条目。 然而,如果我尝试用Jackson进行简单的反序列化,我会得到以下错误: 使用Jackson如何实现这一点? 谢谢 爱德华多
我试图让下面的例子工作: 然而,它失败了 从这个答案中,我尝试了类似这样的做法: 但这失败了: 由于我正在处理的项目的限制,我无法修改对象映射器。所以我不能简单地做: 这本来是可行的。 还有其他简单的方法可以让ImmutableList反序列化工作吗? 编辑:我设法得到了一个不同的错误,如下所示: 这引发了: 如果我可以为ImmutableListDeserializer或类似的东西构建一个无参数