Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中使用Jackson的自定义反序列化_Java_Json_Serialization_Deserialization - Fatal编程技术网

Java中使用Jackson的自定义反序列化

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")

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

示例Json:

"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字段。它在字符串中是空的,因此设置它没有帮助。