[
{
firstKey : "value1",
secondKey : "value2",
thirdKey : "value3"
},
{
firstKey : "value4",
secondKey : "value5",
thirdKey : "value6"
}
]
另外,如果一个键的值为null,那么它就是被接受的默认值,所以我也不能使用@NotNull。对于eg:[{firstKey:null,secondKey:“value2”,thirKey:“value3”}]是有效的JSON,在反序列化过程中应该毫无异常地进行解析。
验证功能总体上没有在Jackson中实现,因为它被认为超出了范围,请参见例如Jackson-Required Property?。
关于注释@JSONProperty(required=true)
对字段不起作用的一些信息可以在这里找到:Jackson@JSONProperty(required=true)dost't throw an exception。
但是,有一个技巧可能适用于null
&现有的值良好的字段值,但如果该字段完全丢失,则抛出异常。创建带有注释@jsonCreator
的构造函数(并且不要创建默认构造html" target="_blank">函数!)其中使用了相同的注释@jsonProperty(value=“*field_name*”,required=true)
,如果缺少字段,它将抛出,如下所示:
@Getter @Setter
public class KeyHolder {
private String firstKey;
private String secondKey;
private String thirdKey;
@JsonCreator
public KeyHolder(
@JsonProperty(value = "firstKey", required = true) String firstKey,
@JsonProperty(value = "secondKey", required = true) String secondKey,
@JsonProperty(value = "thirdKey", required = true) String thirdKey) {
this.firstKey = firstKey;
this.secondKey = secondKey;
this.thirdKey = thirdKey;
}
}
有了这些,做:
new ObjectMapper().readValue("{ \"firstKey\": \"val1\", \"secondKey\": \"val2\" }"
, KeyHolder.class);
应该导致类似的结果:
com.fasterxml.jackson.databind.exc.MisMatchedInputException:缺少必需的创建者属性“第三键”(索引%2)
@JsonProperty(value = "fourthKey", required = true) String fourthKey) {
this.fourthKey = fourthKey;
我和jackson一起绘制地图,我有点迷茫。我的Json具有以下结构 我确实找到了很多处理数组的教程,但我在第一个标记“d”时就已经失败了。而且根本不需要所有的“_元数据”标记。 我创建了一个包含lastName等属性和一个集合附件的pojo。但我的代码在标记“d”或“_元数据”时总是失败 还有杰克逊的读者 任何提示都将不胜感激。 问候马蒂亚斯
我有一个API,它以以下格式返回JSON: 我还有一个POJO类,它具有与JSON响应的键对应的字段,因为、和键在我的用例中不相关。 是否可以将JSON响应映射到我的JavaPOJO类,即只映射键内的值? 一种可能的方法是接受String响应,并使用setter方法将其映射到我的POJO。 有更好的办法吗。像这样的
我将jOOQ与普通SQL(不是生成的代码)一起使用。我试图直接选择一个POJO,它有一些enum类型的字段。 在我看来,我只能为我的整个POJO指定一个高级映射器,如下所示: 我找不到仅为某些字段提供映射或转换器的方法。具体来说,我想告诉jooq“正常转换所有字段,除非我的POJO中的字段是MyEnum类型的,在这种情况下使用这个映射(或转换器)”。 如何为某些字段而不是其他字段指定映射器? 顺便
我使用JAVA jackson将JSON映射到JAVA pojo对象,我的JSON文件是: 在之后,我收到了以下错误消息: 不能反序列化出START_ARRAY令牌 我的POJO课程: 请问,这种JSON格式的正确java POJO是什么?谢谢
我尝试过将proto转换为java pojo。但得到了错误 [Stderr]命令。原型:12:18:预期为“必需”、“可选”或“重复”。[Stderr]命令。proto:12:21:应为字段名。 请帮我做些需要改变的事情。我在谷歌protobuf开发者网站上搜索https://developers.google.com/protocol-buffers/docs/proto#maps它表示映射字段
我一直在研究Jackson,但似乎必须将映射转换为JSON,然后将生成的JSON转换为POJO。 有没有一种方法可以将地图直接转换成POJO?