추상 클래스를 사용하여 JSON 데이터 배열을 POJO로 역 직렬화하려면 어떻게해야합니까?

칼라 쉘

일부 JSON을 pojo에 매핑하려고합니다. 실제 데이터의 정보를 사용하여 수행하는 방법을 보았지만 제 경우에는 데이터가 어떻게 다른지 식별하는 것이 없지만 목록이 무엇으로 구성되어 있는지 알고 있습니다. 아래 예에서는 수감자 또는 건물 목록을 가져올 수 있지만이 경우에는 수감자 목록을 받고 있음을 알고 있습니다.

아래 JSON이 주어졌습니다 (중첩 된 데이터 가 이상 하다는 것을 알고 있지만 JSON이 주어 졌으므로 제어 할 수 없습니다.)

{
    "data": [{
        "data": {
            "create_date": "2015-09-30",
            "building": "12",
            "dob": "2/11/1965",
            "gender": "M",
            "location": {
                "zip": "10459"
            },
            "name": {
                "first": "James",
                "last": "Bond"

            },
            "id": "45"
        },
        "uri": "/prisoner/45"
    }, {
        "data": {
            "create_date": "2015-09-27",
            "building": "12",
            "dob": "12/15/1985",
            "gender": "M",
            "location": {
                "zip": "10459"
            },
            "name": {
                "first": "Hans",
                "last": "Gruber"

            },
            "id": "56"
        },
        "uri": "/prisoner/56"
    }],
    "totals": {
        "total": 2,
        "page": 1
    },
    "links": [{
        "uri": "/prisoners?limit=2"
    }]
}

총계 개체와 링크 개체를 포함 하는 데이터 개체가 있습니다. 중첩 된 Data 개체 배열 이 포함 된 Datum 개체 의 컬렉션 (이 경우 목록)도 있습니다 . 데이텀 객체는이 과 함께 추상 클래스 열린 우리당 문자열입니다. 나는 죄수건물 클래스가 Thing을 확장 합니다. 위의 JSON에서 나는 죄수 목록을 얻고 있음을 알고 있습니다.

내 현재 코드 :

ObjectMapper mapper = new ObjectMapper();
Data data = mapper.readValue(responseJSON.toString(), Data.class);

Datum으로 이동 하여 Thing 개체를 Prisoner 개체 변경하면 완벽하게 작동합니다. 내 질문은 Prisoner 또는 Building을 수락 하지만 여전히 추상 Thing 클래스를 유지하거나 적어도 더 일반적이 될 수 있도록 만드는 방법입니다. 여러 개의 Datum 클래스를 만들 수 있다는 것을 알고 있지만 하나의 Datum 클래스를 가질 수있는 방법이 있어야한다고 생각합니다. 저는 실제로 제가 얻을 수있는 데이터의 다양한 가능성을 가지고 있습니다.

Araqnid

값을 읽을 때 사물의 유형이 무엇인지 알고 있습니까? 이 경우 데이터 (예 Data<T extends Thing>:)를 매개 변수화하고 유형 매개 변수를 Datum에 전파하여 보유한 사물의 하위 클래스를 지정할 수 있기 때문입니다. 그리고 나서 다음과 같이 정적으로 수행 할 수있는 readValue를 호출 할 때 매개 변수화 된 유형에 대해 Jackson에게 알려야합니다.

mapper.readValue(jsonString, new TypeReference<Data<Prisoner>>(){});

ObjectMapper에서 사용 가능한 TypeFactory를 사용하여 매개 변수화 된 유형을 구성하여 동적으로 수행 할 수 있습니다. 다음과 같은 것 :

mapper.readValue("", mapper.getTypeFactory()
                           .constructParametricType(Data.class, thingSubclass));

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #을 사용하여 JSON 데이터를 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

Newtonsoft.Json을 사용하여 SerializationBinder와 CustomResolver를 함께 사용하여 추상 / 인터페이스 유형을 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

JSON 배열을 네이티브 .net 데이터 구조로 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

추가 데이터를 사용하여 배열을 json으로 인코딩하려면 어떻게해야합니까?

분류에서Dev

reqwest 응답의 바이트 스트림을 JSON으로 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

JSON이 날짜를 속성 이름으로 사용하는 경우 GSON을 사용하여 JSON을 Java 개체로 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

데스크톱 C # 앱에서 객체 클래스의 이름을 루트로 추가하여 객체를 Json으로 직렬화하려면 어떻게해야합니까?

분류에서Dev

인터페이스로 선언 된 속성을 사용하여 클래스를 직렬화하려면 어떻게해야합니까?

분류에서Dev

PureConfig가 JSON을 JValue 필드로 역 직렬화하도록하려면 어떻게해야합니까?

분류에서Dev

Django Rest Framework를 사용하여 단일 요청으로 여러 파일을 역 직렬화하고 데이터를 형성하려면 어떻게해야합니까?

분류에서Dev

kotlin-logging (MicroUtils)을 사용하여 추상 클래스 이름 대신 하위 클래스 이름으로 인쇄하려면 어떻게해야합니까?

분류에서Dev

일부 json 속성이 배열 또는 목록에 할당되도록 json을 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

Unity에서 json.net을 역 직렬화하여 다중 / 중첩 된 클래스 반환 값을 얻으려면 어떻게해야합니까?

분류에서Dev

스택을 반전하지 않고 System.Text.Json을 사용하여 Stack <T>를 JSON으로 직렬화하려면 어떻게해야합니까?

분류에서Dev

문자열 배열을 class []로 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

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

분류에서Dev

serde를 사용하여 특정 열거 형 변형으로 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

XmlSerializer를 사용하여 이기종 자식 노드를 컬렉션으로 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

Python을 사용하여 Excel에서 JSON으로,이 데이터를 필요에 맞게 형식화하려면 어떻게해야합니까?

분류에서Dev

복잡한 Swift 객체를 AWS Lambda 페이로드로 올바르게 직렬화 / 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

복잡한 Swift 객체를 AWS Lambda 페이로드로 올바르게 직렬화 / 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

JSON을 C # 클래스로 역 직렬화하면 null이 반환됩니다.

분류에서Dev

Import-CliXml을 사용하여 사용자 지정 클래스 개체의 일반 목록을 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

Newtonsoft를 사용하여 json 문자열을 json 배열로 변환하려면 어떻게해야합니까?

분류에서Dev

Node.js / Express를 사용하여 MongoDB에서 배열이 아닌 객체로 데이터를 추출하려면 어떻게해야합니까?

분류에서Dev

JSON을 사용하여 데이터를 저장 / 다시 열려면 어떻게해야합니까?

분류에서Dev

XStream을 사용하여 형식 계층에서 개체를 직렬화 / 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

JavaScript 및 Json을 사용하여 API에 데이터를 게시하려면 어떻게해야합니까?

분류에서Dev

JSON 데이터를 객체로 올바르게 추출 / 변환하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    C #을 사용하여 JSON 데이터를 역 직렬화하려면 어떻게해야합니까?

  2. 2

    Newtonsoft.Json을 사용하여 SerializationBinder와 CustomResolver를 함께 사용하여 추상 / 인터페이스 유형을 역 직렬화하려면 어떻게해야합니까?

  3. 3

    JSON 배열을 네이티브 .net 데이터 구조로 역 직렬화하려면 어떻게해야합니까?

  4. 4

    추가 데이터를 사용하여 배열을 json으로 인코딩하려면 어떻게해야합니까?

  5. 5

    reqwest 응답의 바이트 스트림을 JSON으로 역 직렬화하려면 어떻게해야합니까?

  6. 6

    JSON이 날짜를 속성 이름으로 사용하는 경우 GSON을 사용하여 JSON을 Java 개체로 역 직렬화하려면 어떻게해야합니까?

  7. 7

    데스크톱 C # 앱에서 객체 클래스의 이름을 루트로 추가하여 객체를 Json으로 직렬화하려면 어떻게해야합니까?

  8. 8

    인터페이스로 선언 된 속성을 사용하여 클래스를 직렬화하려면 어떻게해야합니까?

  9. 9

    PureConfig가 JSON을 JValue 필드로 역 직렬화하도록하려면 어떻게해야합니까?

  10. 10

    Django Rest Framework를 사용하여 단일 요청으로 여러 파일을 역 직렬화하고 데이터를 형성하려면 어떻게해야합니까?

  11. 11

    kotlin-logging (MicroUtils)을 사용하여 추상 클래스 이름 대신 하위 클래스 이름으로 인쇄하려면 어떻게해야합니까?

  12. 12

    일부 json 속성이 배열 또는 목록에 할당되도록 json을 역 직렬화하려면 어떻게해야합니까?

  13. 13

    Unity에서 json.net을 역 직렬화하여 다중 / 중첩 된 클래스 반환 값을 얻으려면 어떻게해야합니까?

  14. 14

    스택을 반전하지 않고 System.Text.Json을 사용하여 Stack <T>를 JSON으로 직렬화하려면 어떻게해야합니까?

  15. 15

    문자열 배열을 class []로 역 직렬화하려면 어떻게해야합니까?

  16. 16

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

  17. 17

    serde를 사용하여 특정 열거 형 변형으로 역 직렬화하려면 어떻게해야합니까?

  18. 18

    XmlSerializer를 사용하여 이기종 자식 노드를 컬렉션으로 역 직렬화하려면 어떻게해야합니까?

  19. 19

    Python을 사용하여 Excel에서 JSON으로,이 데이터를 필요에 맞게 형식화하려면 어떻게해야합니까?

  20. 20

    복잡한 Swift 객체를 AWS Lambda 페이로드로 올바르게 직렬화 / 역 직렬화하려면 어떻게해야합니까?

  21. 21

    복잡한 Swift 객체를 AWS Lambda 페이로드로 올바르게 직렬화 / 역 직렬화하려면 어떻게해야합니까?

  22. 22

    JSON을 C # 클래스로 역 직렬화하면 null이 반환됩니다.

  23. 23

    Import-CliXml을 사용하여 사용자 지정 클래스 개체의 일반 목록을 역 직렬화하려면 어떻게해야합니까?

  24. 24

    Newtonsoft를 사용하여 json 문자열을 json 배열로 변환하려면 어떻게해야합니까?

  25. 25

    Node.js / Express를 사용하여 MongoDB에서 배열이 아닌 객체로 데이터를 추출하려면 어떻게해야합니까?

  26. 26

    JSON을 사용하여 데이터를 저장 / 다시 열려면 어떻게해야합니까?

  27. 27

    XStream을 사용하여 형식 계층에서 개체를 직렬화 / 역 직렬화하려면 어떻게해야합니까?

  28. 28

    JavaScript 및 Json을 사용하여 API에 데이터를 게시하려면 어떻게해야합니까?

  29. 29

    JSON 데이터를 객체로 올바르게 추출 / 변환하려면 어떻게해야합니까?

뜨겁다태그

보관