我遇到了反序列化问题:
这是我的班级:
public class Response {
private Object ResObj;
private int ResInt;
public Object getResObj() {
return ResObj;
}
public int getResInt() {
return ResInt;
}
}
我要反序列化的JSON是:
{"ResObj":{"ClientNum":"12345","ServerNum":"78945","IdNum":"020252"},"ResInt":0}
我得到以下例外:
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ResObj" , not marked as ignorable (0 known properties: ])
at [Source: java.io.StringReader@1f758500; line: 1, column: 20] (through reference chain: ["ResObj"])
我不想补充:
@JsonIgnoreProperties(ignoreUnknown = true)
因为我想得到ResObj...
如果我添加注释,它会通过,但会将其设置为null。。这是我不想要的。
我想你应该试试这个
public class Response {
@JsonProperty
private Object ResObj;
@JsonProperty
private int ResInt;
public Object getResObj() {
return ResObj;
}
public int getResInt() {
return ResInt;
}
}
它将解决您的问题与无法识别的属性异常
您需要Setter方法来允许Jackson设置属性,并且需要更改json中的字段以小写字母开头:
public class Response {
private Object ResObj;
private int ResInt;
public Object getResObj() {
return ResObj;
}
public void setResObj(Object ResObj) {
this.ResObj = ResObj;
}
// ...
}
和:
{"resObj":{"clientNum":"12345","serverNum":"78945","idNum":"020252"},"resInt":0}
JSON更改的原因是Jackson bean序列化将反映在类上,当它看到getXyz()和setXyz()方法时,会将它们映射到JSON文件名“xyz”(而不是“xyz”)。
我认为有几种方法可以覆盖这种行为,一种是使用Jackson注释之一。
如果您不想在bean中使用setter,而只使用字段和getter,那么可以使用ObjectMapper的可见性检查器来允许字段可见性
如下所示:
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.setVisibility(VisibilityChecker.Std.defaultInstance().withFieldVisibility(JsonAutoDetect.Visibility.ANY));
我尝试使用一些类似于以下内容的JSON(来自AlphaVantage): 并使用Jackson解析它( 我的股票类如下所示: 相反,我得到了以下错误: 为什么Jackson在连接到我的股票类时遇到问题?如何将JSON中的符号连接到Stock类中的符号? 编辑:如果我将符号更改为小写,我会收到相同的错误消息:
当我尝试反序列化汽车类时,我得到了下面的错误。杰克逊正试图在父类中的子元素中搜索字段。我如何确保杰克逊使用适当的子类型进行反序列化?我相信我需要使用混合/客户转换器。但我不确定如何在这个特定场景中使用它们。 注意:在我的例子中,除TestMain之外的所有类都在一个jar文件中,我不能修改源文件。 错误 线程"main"中的异常com.fasterxml.jackson.databind.exc.
将字符串反序列化为对象时遇到错误。 org.opentest4j.MultipleFailuresError:多个失败(2失败)com.fasterxml.jackson.databind.exc.Invalid定义异常:无法构建的实例(没有Creator,像默认构造一样,存在):没有String-参数构造函数/工厂方法从String值反序列化('2020-05-20')at[来源:(字符串) J
问题内容: 我使用杰克逊将JSON转换为Object类。 JSON: 对象类别: 码: 我的代码抛出这样的异常: 而且我不想在Test类上添加一个道具,我只是想让jackson转换Test中也存在的存在值。 问题答案: Jackson提供了几种不同的机制来配置“额外” JSON元素的处理。以下是将to 配置为not 的示例。 有关其他方法,请参见http://wiki.fasterxml.com/
我正在尝试使用fasterxml将json应答解析为POJO。但问题是,json回复包含嵌套的对象,其中包含反斜杠,所以在ObjectMapper读取该值时,我收到了com。fasterxml。杰克逊。数据绑定。exc.不匹配计算异常 我不知道如何用fasterxml解析这个对象?! 我的POJO对象模型如下所示: 我收到的原始json消息: “交易/报价/BTC-PLN-BTC-C-C-PLN,
我正在使用Jackson序列化我的JavaPOJO类。除了字段之外,我JavaPOJO,我想在JSON中添加一些附加信息我正在编写自己的自定义。如果我使用这个类并注册到,那么我会得到错误: 我无法理解这里可能出了什么问题。如果我删除自定义注册模型,那么一切都可以完美运行。 有人能让我知道这个问题的可能原因吗?我目前使用的是Jackson 2.13.2最新版本依赖项:: 以下是示例代码: 我想知道上