Java中使用Jackson的自定义反序列化
我正在尝试实现一个大学项目,其中我尝试从两个Json字段获取值,并将其映射到一个pojo类 示例Json:Java中使用Jackson的自定义反序列化,java,json,serialization,deserialization,Java,Json,Serialization,Deserialization,我正在尝试实现一个大学项目,其中我尝试从两个Json字段获取值,并将其映射到一个pojo类 示例Json: "event":[{"D17-32":0,"S10":"D"}] 波乔班 public class Event { @JsonDeserialize(using = SignalCustomDeserializer.class) @JsonTypeInfo(use = JsonTypeInfo.Id.NONE) @JsonProperty("S10")
"event":[{"D17-32":0,"S10":"D"}]
波乔班
public class Event {
@JsonDeserialize(using = SignalCustomDeserializer.class)
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
@JsonProperty("S10")
private Signal S10;
@JsonProperty("D17-32")
private String D17_32;
//Getter and setter implementation
}
类,我需要将字段序列化到该类
public class Signal{
private String value;
private String detectorId;
private int detectorValue; //this value has to be fetched from another json
//Getter and setter implementation
}
自定义反序列化器类
public class SignalCustomDeserializer extends JsonDeserializer {
@Override
public Signal deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
String signalId = jsonParser.getCurrentName();
String signalVal = jsonParser.getValueAsString();
String detectorVal = jsonParser.getValueAsString("D01-16");
Signal signal = new Signal();
signal.setValue(signalVal);
signal.setDetectorId(getDetectorId(signalId));
return signal;
}
}
我可以获取signalId和signalValue,但无法获取其他字段的值。当调用自定义反序列化类时,我不确定它是否在JsonObject中可用。你能发布示例json值吗?你的问题是什么?JSON看起来怎么样?signal.setDetectorValue(..)语句在哪里?这是你的问题吗?@MoritzPetersen添加了一个json示例。我的问题是,我为一个字段定义了一个自定义反序列化程序,我试图从另一个字段检索值。如果您查看信号字段,它将序列化为signal类,我也将尝试访问D01-16field@premkumar添加了一个json示例。我的问题是,我为一个字段定义了一个自定义反序列化程序,我试图从另一个字段检索值。如果您查看一下signal字段,它会序列化到signal类,在这里我也尝试访问D01-16字段。它在字符串中是空的,因此设置它没有帮助。