Я не могу десериализовать экземпляр `java .lang.String` из токена START_OBJECT - PullRequest
2 голосов
/ 08 мая 2020

Я пытаюсь сопоставить файл json с объектом json, но получаю сообщение об ошибке, так как не могу десериализовать строку из токена start_object.

Это мой json файл

{
    "serial_key": 2,
    "serial_identity" : "20200580011000",
    "serial_type" : "I",
    "serial_source" : "NASA"
    "serial_detail" : {
            "serialID": "20200580011000",
            "patient": {
                "name": {
                    "fullName": "John Mathew",
                    "lastName": "John",
                    "firstName": "Mathew"
                },
                "gender": "Female",
                "century": "0",
                "dateOfBirth": 252460800000,
                "admissionStatus": "active"
            }
        }
    }

Ниже мой класс сопоставления

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SerialDto { 

    @JsonProperty("serial_key")
    private Long serialKey;

    @JsonProperty("serial_identity")
    private String serialIdentity;

    @JsonProperty("serial_type")
    private String serialType;

    @JsonProperty("serial_source")
    private String serialSource;

    @JsonProperty("serial_detail")
    private String serialDetail;

}

Ниже приведен код для его сопоставления

String json;
        ObjectMapper mapper = new ObjectMapper();
        try {
            json = FileUtils.readFileToString(new File("src/main/resources/test.json"), StandardCharsets.UTF_8);
            SerialDto dto = mapper.readValue(json, SerialDto.class);    
            System.out.println(dto.getSerialIdentity());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Исключение, которое я получаю:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
(through reference chain: com.app.entity.SerialDto["serial_detail"])

Может ли кто-нибудь помочь привязать serial_detail к строке serialDetail, где нужно изменить формат json, чтобы получить serial_detail как строку json?

...