Gson을 사용하여 JSON을 HashMAp <String, POJO>로 역 직렬화하지 못함

알리스 테어 허튼

JSON을지도에있는 POJO로 올바르게 역 직렬화하는 데 문제가 있습니다.

다음과 같은 임의의 키 수로 JSON 사전을 반환하는 웹 서비스에 연결합니다.

{ 
    "arbitray_key_name": {
        "foo_sticks": "objectName"
        "bar_socks": ["A", "B"]
    },
    "another_key_name: {
        "foo_sticks": "differentName"
        "bar_socks": ["C", "D", "E"]
    }
    ...
}

Gson을 사용하여 HashMap으로 역 직렬화하고 있습니다. 만약 내가한다면

HashMap<String, Object> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, Object>>() {}.getType());

위의 JsonData (분명히 ... 빼기)를 사용하면 2 항목의 HashMap, 'arbitray_key_name', 'another_key_name'의 키가 예상되는 것을 정확히 얻습니다. 여기서 각 값은 올바른 키 / 값이있는 맵입니다. 자식 개체에 대한 정보.

그러나 다음과 같은 값을 역 직렬화하려는 POJO 클래스가 있습니다.

public class FooInfo {
    @Key("foo_sticks")
    public String fooSticks;

    @Key("bar_socks")
    public String[] barSocks;
}

내가 노력한다면

HashMap<String, FooInfo> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, FooInfo>>() {}.getType());

그런 다음 각 값이 FooInfo이지만 두 FooInfo 개체의 필드가 모두 null이고 Json이 개체에 매핑되지 않은 두 항목의 HashMap을 반환합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

그리고 W

@Key주석을 어디서 얻었는지 모르겠지만 Gson은 @SerializedName.

변경 후 수업이 있습니다.

public class FooInfo {
    @SerializedName("foo_sticks")
    public String fooSticks;

    @SerializedName("bar_socks")
    public String[] barSocks;

    @Override
    public String toString() {
        return "FooInfo [fooSticks=" + fooSticks + ", barSocks=" + Arrays.toString(barSocks) + "]";
    }
}

그런 다음 JSON을 구문 분석합니다.

{ 
    "arbitray_key_name": {
        "foo_sticks": "objectName",
        "bar_socks": ["A", "B"]
    },
    "another_key_name": {
        "foo_sticks": "differentName",
        "bar_socks": ["C", "D", "E"]
    }
}

개체에서 제대로 읽을 수 있습니다.

HashMap<String, FooInfo> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, FooInfo>>() {}.getType());
System.out.println(map);

예상되는 출력을 얻으십시오.

{another_key_name=FooInfo [fooSticks=differentName, barSocks=[C, D, E]], arbitray_key_name=FooInfo [fooSticks=objectName, barSocks=[A, B]]}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Gson을 사용하여 POJO를 Json으로 직렬화

분류에서Dev

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

분류에서Dev

입력 json을 MVC-API의 list <string>으로 역 직렬화하지 못했습니다.

분류에서Dev

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

분류에서Dev

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

분류에서Dev

JSON.NET을 사용하여 dictionary <string, object> 역 직렬화 및 직렬화

분류에서Dev

Json.NET이 System.Range 속성을 제대로 역 직렬화하지 못함

분류에서Dev

Gson을 사용하여 JSON을 POJO로 변환 : JsonSyntaxException

분류에서Dev

작동하지 않는 Gson을 사용하여 json 역 직렬화

분류에서Dev

Gson을 사용하여 템플릿 클래스로 역 직렬화

분류에서Dev

System.Text.Json을 사용하여 동적 속성을 포함하는 클래스로 JSON 역 직렬화

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Gson을 사용하여 매핑 할 json 배열 역 직렬화

분류에서Dev

Gson을 사용하여 Json에서 Map 역 직렬화

분류에서Dev

GSON을 사용하여 객체의 JSON 배열 역 직렬화

분류에서Dev

공백을 포함하는 열거 형을 사용하여 Json을 NJsonSchema 생성 객체로 역 직렬화

분류에서Dev

GSON을 사용하여 평면화 된 JSON 키를 적절한 개체로 역 직렬화

분류에서Dev

GSON을 사용하여 열거 형의 사용자 지정 역 직렬화

분류에서Dev

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

분류에서Dev

Json.NET을 사용하여 Json String에서 중첩 된 DataSet 역 직렬화

분류에서Dev

NSJSONSerialization을 사용하여 json에서 이미지 역 직렬화

분류에서Dev

JavaScriptSerializer를 사용하여 JSON을 튜플으로 역 직렬화하는 방법

분류에서Dev

Newtonsoft.Json을 사용하여 이름을 값으로 역 직렬화

분류에서Dev

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

분류에서Dev

목록 속성을 사용하여 JSON을 객체로 역 직렬화

분류에서Dev

Objective-C를 사용하여 JSON을 사용자 지정 개체로 역 직렬화

분류에서Dev

Newtonsoft.JSON을 사용하여 C #으로 Json 문자열 역 직렬화

분류에서Dev

C # JSON.NET을 사용하여 Dictionary <(Enum, Enum), string> 역 직렬화

Related 관련 기사

  1. 1

    Gson을 사용하여 POJO를 Json으로 직렬화

  2. 2

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

  3. 3

    입력 json을 MVC-API의 list <string>으로 역 직렬화하지 못했습니다.

  4. 4

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

  5. 5

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

  6. 6

    JSON.NET을 사용하여 dictionary <string, object> 역 직렬화 및 직렬화

  7. 7

    Json.NET이 System.Range 속성을 제대로 역 직렬화하지 못함

  8. 8

    Gson을 사용하여 JSON을 POJO로 변환 : JsonSyntaxException

  9. 9

    작동하지 않는 Gson을 사용하여 json 역 직렬화

  10. 10

    Gson을 사용하여 템플릿 클래스로 역 직렬화

  11. 11

    System.Text.Json을 사용하여 동적 속성을 포함하는 클래스로 JSON 역 직렬화

  12. 12

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

  13. 13

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

  14. 14

    Gson을 사용하여 매핑 할 json 배열 역 직렬화

  15. 15

    Gson을 사용하여 Json에서 Map 역 직렬화

  16. 16

    GSON을 사용하여 객체의 JSON 배열 역 직렬화

  17. 17

    공백을 포함하는 열거 형을 사용하여 Json을 NJsonSchema 생성 객체로 역 직렬화

  18. 18

    GSON을 사용하여 평면화 된 JSON 키를 적절한 개체로 역 직렬화

  19. 19

    GSON을 사용하여 열거 형의 사용자 지정 역 직렬화

  20. 20

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

  21. 21

    Json.NET을 사용하여 Json String에서 중첩 된 DataSet 역 직렬화

  22. 22

    NSJSONSerialization을 사용하여 json에서 이미지 역 직렬화

  23. 23

    JavaScriptSerializer를 사용하여 JSON을 튜플으로 역 직렬화하는 방법

  24. 24

    Newtonsoft.Json을 사용하여 이름을 값으로 역 직렬화

  25. 25

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

  26. 26

    목록 속성을 사용하여 JSON을 객체로 역 직렬화

  27. 27

    Objective-C를 사용하여 JSON을 사용자 지정 개체로 역 직렬화

  28. 28

    Newtonsoft.JSON을 사용하여 C #으로 Json 문자열 역 직렬화

  29. 29

    C # JSON.NET을 사용하여 Dictionary <(Enum, Enum), string> 역 직렬화

뜨겁다태그

보관