我有一个Packet
类,它可以很好地序列化和反序列化:
@JsonDeserialize(builder = Packet.Builder.class)
public final class Packet {
// Constructors, getters, etc
// ...
public static final class Builder {
// Builder variables...
// ...
@JsonProperty("value_date")
public Builder valueDate(String val) {
valueDate = val;
return this;
}
@JsonProperty("generation_date")
public Builder generationTimeStamp(String val) {
generationTimeStamp = val;
return this;
}
public Packet build() { return new Packet(this); }
}
我还有一个< code>PacketResponse对象,类似于:
@JsonDeserialize(builder = PacketResponse.Builder.class)
public final class PacketResponse {
// Packet and response message
private final String message;
private final Packet packet;
// Constructors, getters, etc
// ...
public static final class Builder {
private Packet packet;
private String message;
private Builder() {}
@JsonProperty("packet")
public Builder packet(Packet val) {
packet = val;
return this;
}
@JsonProperty("message")
public Builder message(String val) {
message = val;
return this;
}
public PacketResponse build() {
return new PacketResponse(this);
}
}
PacketResponse
对象的序列化工作正常,结果如下:
{
"message": "the quick brown fox",
"packet": {
"valueDate": "2015-10-24",
"generationTimeStamp": "2015-11-12T20:45:24+0000"
}
}
然而,当我试图将这个JSON反序列化回一个< code>PacketResponse对象时,使用
new ObjectMapper().readValue(json, PacketResponse.class);
我得到一个无法识别的字段“valueDate”(类com.m.Packet$Builder),未标记为可忽略
。
似乎它正在尝试反序列化 Packet
,但由于它没有直接执行此操作,杰克逊看不到 @JsonProperty(“value_date”)
注释,而是正在寻找一个 valueDate
字段(因为这是构建器方法的名称)。
有人能帮我找出反序列化JSON的正确方法吗?我对Jackson还是新手,不知道如何解决这个问题。
JSON包含“valueDate”,但@JsonProperty注释指定了“value_date”(带下划线)。
注释中的“generation_date”与JSON中的“生成时间戳”也是如此。
我目前正在开发一个Java web应用程序,它使用Magento REST API公开的JSON数据。api返回的数据示例如下: 我的应用程序中有一个Java类,如下所示: 我想对数据进行反序列化,并将其转换为,但我总是得到以下错误: 这是我用来将JSON响应反序列化为ArrayList的语句行: 有人能分享一些见解吗?我看到一些例子,返回的JSON对象前面没有任何ID。那是因为我做错了什么吗?非
我需要一个自定义反序列化器来在复杂的POJO中转换字符串。反序列化工作直到使用反序列化器:特别是使用自定义反序列化器时,我的对象的非对象属性不会序列化。 我有一个restful Web服务,它有一个pojo作为参数。 所以我的类PreentivoWs需要一个方法。这里是类定义: 在jsonObject中,我有一个枚举定义为 但此对象需要转换反序列化程序: 并在财产上标注: fromString方法
问题内容: 在杰克逊的数据绑定的文档表明,杰克逊支持deserialising“所有支持类型的数组”,但我不能找出确切的语法这一点。 对于单个对象,我可以这样做: 现在,对于数组,我想这样做: 有人知道是否有不可思议的命令吗?如果没有,那么解决方案是什么? 问题答案: 首先创建一个映射器: 作为数组: 作为列表: 指定列表类型的另一种方法:
我有一个JSON,它带有一个包含任意键和值类型的标记,我想将其读入Java中POJO内的映射。映射将是指向JsonValue或JsonNode之类的字符串。我正在使用对象映射器解析json。 有人对如何设置我的POJO来与杰克逊一起完成这一任务有什么建议吗?还是一种更好的方式? Json示例: 映射方法: 我的POJO:
问题内容: 支持deserialising“所有支持类型的数组”,但我不能找出确切的语法这一点。 对于单个对象,我可以这样做: 现在,对于数组,我想这样做: 有人知道是否有不可思议的命令吗?如果没有,那么解决方案是什么? 问题答案: 首先创建一个映射器: 作为数组: 作为列表: 指定列表类型的另一种方法:
问题内容: 我有一个问题。我想使用JAXB将一个对象转换为另一个对象。就像在中,我有一个class 和另一个class ,它们都有相同的参数,实际上都是相同的(复制粘贴),但是包不同。我想使用进行它们之间的转换。 怎么做,请帮帮我。 问题答案: 您可以执行以下操作。 注意: 不需要利用JAXBSource将数据具体化为XML。 它在对象模型上不需要任何注释。 com.home.Student co