在Java中使用Jackson进行自定义反序列化

时间:2016-11-10 14:49:41

标签: java json serialization deserialization

我正在尝试实现一个大学项目,我尝试从两个Json字段中获取值并将其映射到一个pojo类。

示例Json:

"event":[{"D17-32":0,"S10":"D"}]

Pojo课程

    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中可用。

0 个答案:

没有答案