Jackson을 사용하여 여러 유형을 단일 필드로 역 직렬화

JSON 역 직렬화에 사용하려는 다음 클래스가 있습니다.

public interface MyObject {

    @JsonProperty("prop")
    String prop;

    @JsonProperty("value")
    Double value();        // Need this to be either a double or a string or a Map
}

그러나 이중 값으로 JSON을 모두 구문 분석 할 수 있기를 원합니다.

{
  prop: "myprop",
  value: 15.7
}

그리고 문자열이나지도와 같은 Double 값이 아닌 JSON

{
  prop: "myprop1",
  value: {
    "attr1": "value1",
    "attr2": 12.0
  }
}

@JsonSubTypes주석을 살펴 보았지만 상속이 관련된 경우에만 유용 해 보입니다. Jackson에서 할 수 있습니까? 그렇다면 동일한 작업을 수행하기 위해 Java 클래스를 어떻게 정의 할 수 있습니까?

Arvid Heise

일반적으로 임의 유형의 데이터 포인트를 사용하지 않는 것이 좋습니다. 강력한 유형을 갖는 것은 원하는 경우 이야기 할 수있는 많은 이점을 제공합니다. 그러나 deserialization에 대해서만 이야기했기 때문에 다른 사람이 생성 한 JSON을 읽고있는 것일 수 있습니다.

해결책은 아주 간단합니다. 객체 필드를 사용합니다.

public static class MyObject {

    @JsonProperty("prop")
    String prop;

    @JsonProperty("value")
    Object value;        // <- object
}

@Test
public void testUnknownType() throws JsonProcessingException {
    final ObjectMapper objectMapper = new ObjectMapper();
    final MyObject object1 = objectMapper.readValue("{\n" +
        "  \"prop\": \"myprop\",\n" +
        "  \"value\": 15.7\n" +
        "}", MyObject.class);
    Assert.assertEquals(15.7d, object1.value);
    final MyObject object2 = objectMapper.readValue("{\n" +
        "  \"prop\": \"myprop1\",\n" +
        "  \"value\": {\n" +
        "    \"attr1\": \"value1\",\n" +
        "    \"attr2\": 12.0\n" +
        "  }\n" +
        "}", MyObject.class);
    Assert.assertTrue(object2.value instanceof Map);
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Jackson을 사용하여 여러 json 키를 하나의 필드로 역 직렬화

분류에서Dev

Jackson을 사용하여 JSON 배열을 단일 연결 목록으로 역 직렬화하는 방법

분류에서Dev

Jackson을 사용하여 패턴으로 속성 역 직렬화

분류에서Dev

Jackson을 사용하여 Lombok 빌더로 역 직렬화

분류에서Dev

GSON 또는 Jackson을 사용하여 일반 인수를 사용하여 JSON을 클래스로 역 직렬화

분류에서Dev

Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

분류에서Dev

JsonSubTypes없이 jackson을 사용하여 인터페이스를 특정 유형으로 역 직렬화

분류에서Dev

jackson @JsonTypeInfo 주석을 사용하여 객체를 원래 유형으로 역 직렬화 할 수 없습니다.

분류에서Dev

Jackson을 사용하여 JSON 배열을 매핑으로 역 직렬화

분류에서Dev

NestJS가 복잡한 유형을 사용하여 @Query ()를 DTO로 역 직렬화

분류에서Dev

Gson을 사용하여 여러 유형의 목록 목록 역 직렬화

분류에서Dev

Jackson을 사용하여 JAVA 클래스를 대상으로하는 JSON 직렬화 및 역 직렬화

분류에서Dev

Gson을 사용하여 로컬 json 파일을 역 직렬화하는 Kotlin

분류에서Dev

Jackson을 사용하여 임의의 JSON 역 직렬화

분류에서Dev

Android : Retrofit 및 Jackson을 사용하여 동적 JSON 역 직렬화

분류에서Dev

jackson 주석을 사용하여 다중 수준 다형성 하위 유형을 역 직렬화합니다.

분류에서Dev

Newtosoft Json을 사용하여 Json을 null로 역 직렬화

분류에서Dev

Play의 json을 사용하여 동적 필드 이름을 직렬화 / 역 직렬화하는 방법

분류에서Dev

C #을 사용하여 클래스로 JSON 역 직렬화

분류에서Dev

변수 이름을 사용하여 개체로 역 직렬화

분류에서Dev

JSON.net을 사용하여 동적으로 역 직렬화

분류에서Dev

Jackson을 사용하여 혼합 유형의 익명 배열을 역 직렬화하는 방법

분류에서Dev

Jackson 2-Android에서 Retrofit REST-API를 사용하여 문자열을 날짜로 직접 역 직렬화

분류에서Dev

형식 패턴을 사용하여 문자열을 값으로 역 직렬화

분류에서Dev

Jackson을 사용하여 인덱스로 배열을 역 직렬화하는 방법

분류에서Dev

Jackson을 사용한 JSON 파일의 다형성 역 직렬화

분류에서Dev

ServiceStack을 사용하여 json을 여러 DataContract 중 하나로 역 직렬화하는 방법

분류에서Dev

각 키 값에 대해 다른 개체 유형을 사용하여 JSON 파일 역 직렬화

분류에서Dev

Jackson을 사용하여 재귀 적 Map <String, Object>를 역 직렬화 한 후 유형 안전 경고 방지

Related 관련 기사

  1. 1

    Jackson을 사용하여 여러 json 키를 하나의 필드로 역 직렬화

  2. 2

    Jackson을 사용하여 JSON 배열을 단일 연결 목록으로 역 직렬화하는 방법

  3. 3

    Jackson을 사용하여 패턴으로 속성 역 직렬화

  4. 4

    Jackson을 사용하여 Lombok 빌더로 역 직렬화

  5. 5

    GSON 또는 Jackson을 사용하여 일반 인수를 사용하여 JSON을 클래스로 역 직렬화

  6. 6

    Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

  7. 7

    JsonSubTypes없이 jackson을 사용하여 인터페이스를 특정 유형으로 역 직렬화

  8. 8

    jackson @JsonTypeInfo 주석을 사용하여 객체를 원래 유형으로 역 직렬화 할 수 없습니다.

  9. 9

    Jackson을 사용하여 JSON 배열을 매핑으로 역 직렬화

  10. 10

    NestJS가 복잡한 유형을 사용하여 @Query ()를 DTO로 역 직렬화

  11. 11

    Gson을 사용하여 여러 유형의 목록 목록 역 직렬화

  12. 12

    Jackson을 사용하여 JAVA 클래스를 대상으로하는 JSON 직렬화 및 역 직렬화

  13. 13

    Gson을 사용하여 로컬 json 파일을 역 직렬화하는 Kotlin

  14. 14

    Jackson을 사용하여 임의의 JSON 역 직렬화

  15. 15

    Android : Retrofit 및 Jackson을 사용하여 동적 JSON 역 직렬화

  16. 16

    jackson 주석을 사용하여 다중 수준 다형성 하위 유형을 역 직렬화합니다.

  17. 17

    Newtosoft Json을 사용하여 Json을 null로 역 직렬화

  18. 18

    Play의 json을 사용하여 동적 필드 이름을 직렬화 / 역 직렬화하는 방법

  19. 19

    C #을 사용하여 클래스로 JSON 역 직렬화

  20. 20

    변수 이름을 사용하여 개체로 역 직렬화

  21. 21

    JSON.net을 사용하여 동적으로 역 직렬화

  22. 22

    Jackson을 사용하여 혼합 유형의 익명 배열을 역 직렬화하는 방법

  23. 23

    Jackson 2-Android에서 Retrofit REST-API를 사용하여 문자열을 날짜로 직접 역 직렬화

  24. 24

    형식 패턴을 사용하여 문자열을 값으로 역 직렬화

  25. 25

    Jackson을 사용하여 인덱스로 배열을 역 직렬화하는 방법

  26. 26

    Jackson을 사용한 JSON 파일의 다형성 역 직렬화

  27. 27

    ServiceStack을 사용하여 json을 여러 DataContract 중 하나로 역 직렬화하는 방법

  28. 28

    각 키 값에 대해 다른 개체 유형을 사용하여 JSON 파일 역 직렬화

  29. 29

    Jackson을 사용하여 재귀 적 Map <String, Object>를 역 직렬화 한 후 유형 안전 경고 방지

뜨겁다태그

보관