필드 유형 변경을 통한 Gson 역 직렬화

choka

다음 구조를 가진 JSON을 얻습니다.

{"field1": "string",
"field2": false,
"a": {
    "b": {
        "listString": []
    },
    "c": {
        "listString": [],
        "s": "string"
    },
    "parent": {
        "childA": {
            "listString": ["string", "string"]
        },
        "s": "string"
    },
    "parent2": {
        "listString": ["string", "string"],
        "s": "string"
    }
},
"field3": ["s", "s"]
}

해당 필드의 형식이 변경 될 수 있으므로 parent(및 parent2)에 문제가 있습니다. 복잡한 객체의 형식 동안 bc숙박 동일. 예를 들어, parent다음과 같은 parent2방법으로 (에 대한 동일한 보류)를 얻을 수 있습니다 .

{"parent": {
    "childA":{
        "listString": ["ssssa", "a"]
         },
     "s": "string"
}}

또는

{"parent": {
    "listString": ["ssssa", "a"],
    "s": "string"
}}

또한, childA필드 (있는 경우) 다른 이름을 가질 수 있습니다, 그것은 할 수 있습니다 childB또는childC

복잡한 객체에 대한 Java 클래스를 만들었습니다.

public class MyPojo{
  private String[] field1;
  private String field2;
  private A a;
  private String field3;...}

public class A{
  private B b;
  private C c;
  private Parent parent;
  private Parent2 parent2;..}

public class Parent{
  private String s;
  private ChildA childA;...}...

parentparent2객체의 형식이 다른 경우 Gson으로 이와 같은 것을 어떻게 역 직렬화 할 수 있습니까?

므 루날 파그 니스

이것은 부모 클래스입니다.

public class Parent {
Map<String, JsonElement> parent = null;

public Map<String, JsonElement> getParent() {
    return parent;
}

public void setParent(Map<String, JsonElement> parent) {
    this.parent = parent;
}

}

이것은 주요 클래스입니다.

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String input = "{\"parent\": {\"s\": \"string\",\"childA\":{\"listString\": [\"ssssa\", \"a\"]}}}";
    Gson gsonInstance = null;

    gsonInstance = new GsonBuilder().create();

    Parent p = gsonInstance.fromJson(input, Parent.class);

    Map<String, JsonElement> parentMap = p.getParent();
    Set<String> keyMap = parentMap.keySet();

    Iterator<String> iter = keyMap.iterator();
    while(iter.hasNext()){
        String name = iter.next();
        if(name.matches("child(.*)")){
            System.out.println(parentMap.get(name));
            // do your logic
        }
        if (keyMap.contains("listString")){
            List<String> listString = getListString(parentMap.get("listString"));
            System.out.println(listString.toString());
        }
    }

}

public static List<String> getListString(JsonElement list){
    Type listType = new TypeToken<List<String>>() {}.getType();
    List<String> listString = new Gson().fromJson(list, listType);
    return listString;
}

도움이 되었기를 바랍니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스 필드의 데이터 유형 변경시 역 직렬화 처리

분류에서Dev

유형을 변경 한 라이브러리 클래스의 역 직렬화

분류에서Dev

특정 Gson 직렬 변환기에 대한 직렬화 중 필드 생략

분류에서Dev

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

분류에서Dev

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

분류에서Dev

추가 변수를 사용한 gson 배열 역 직렬화

분류에서Dev

GSON 역 직렬화

분류에서Dev

필드가 2 가지 유형이고 한 가지 유형이 재귀적인 Json을 역 직렬화합니다.

분류에서Dev

Boon JSON-개체 역 직렬화를위한 필드 이름 변경

분류에서Dev

DataTable을 역 직렬화 한 후 DateTime 열 유형이 문자열 유형이 됨

분류에서Dev

자바 열거 형 필드 직렬화 / 역 직렬화

분류에서Dev

Jersey 기본 구현을 사용한 다형성 유형의 역 직렬화 : MOXy

분류에서Dev

GSON를 사용하여 알 수없는 원시적 인 JSON 속성 유형을 역 직렬화하는 방법

분류에서Dev

GSON은 Android에서 두 가지 유형의 객체로 목록을 역 직렬화합니다.

분류에서Dev

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

분류에서Dev

유형이있는 JSON.NET을 통해 들쭉날쭉 한 배열 역 직렬화

분류에서Dev

protobuf - 그물 직렬화 / 날짜 시간 및 가이 드 유형을 역 직렬화

분류에서Dev

GSON은 복잡한 객체 배열을 역 직렬화합니다.

분류에서Dev

CloudKit JS [Double] 변환 가능한 유형 데이터 역 직렬화

분류에서Dev

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

분류에서Dev

대상 유형의 문자열 표현을 사용한 역 직렬화

분류에서Dev

MemoryStream에서 다양한 객체 유형을 효율적으로 역 직렬화

분류에서Dev

복잡한 유형을 단순 유형으로 직렬화 / 역 직렬화하는 Newtonsoft JSON 변환기를 구현하는 방법

분류에서Dev

부분 GSON 역 직렬화

분류에서Dev

GSON 직렬화를 위해 상속에서 필드 유형 덮어 쓰기

분류에서Dev

강력한 형식의 개체로 JSON 응답을 직접 역 직렬화 할 때 필드를 피하는 방법은 무엇입니까?

분류에서Dev

Newtonsoft.Json을 사용한 열거 형 역 직렬화

분류에서Dev

포함 된 형식을 사용한 역 직렬화 JSON

분류에서Dev

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

Related 관련 기사

  1. 1

    클래스 필드의 데이터 유형 변경시 역 직렬화 처리

  2. 2

    유형을 변경 한 라이브러리 클래스의 역 직렬화

  3. 3

    특정 Gson 직렬 변환기에 대한 직렬화 중 필드 생략

  4. 4

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

  5. 5

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

  6. 6

    추가 변수를 사용한 gson 배열 역 직렬화

  7. 7

    GSON 역 직렬화

  8. 8

    필드가 2 가지 유형이고 한 가지 유형이 재귀적인 Json을 역 직렬화합니다.

  9. 9

    Boon JSON-개체 역 직렬화를위한 필드 이름 변경

  10. 10

    DataTable을 역 직렬화 한 후 DateTime 열 유형이 문자열 유형이 됨

  11. 11

    자바 열거 형 필드 직렬화 / 역 직렬화

  12. 12

    Jersey 기본 구현을 사용한 다형성 유형의 역 직렬화 : MOXy

  13. 13

    GSON를 사용하여 알 수없는 원시적 인 JSON 속성 유형을 역 직렬화하는 방법

  14. 14

    GSON은 Android에서 두 가지 유형의 객체로 목록을 역 직렬화합니다.

  15. 15

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

  16. 16

    유형이있는 JSON.NET을 통해 들쭉날쭉 한 배열 역 직렬화

  17. 17

    protobuf - 그물 직렬화 / 날짜 시간 및 가이 드 유형을 역 직렬화

  18. 18

    GSON은 복잡한 객체 배열을 역 직렬화합니다.

  19. 19

    CloudKit JS [Double] 변환 가능한 유형 데이터 역 직렬화

  20. 20

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

  21. 21

    대상 유형의 문자열 표현을 사용한 역 직렬화

  22. 22

    MemoryStream에서 다양한 객체 유형을 효율적으로 역 직렬화

  23. 23

    복잡한 유형을 단순 유형으로 직렬화 / 역 직렬화하는 Newtonsoft JSON 변환기를 구현하는 방법

  24. 24

    부분 GSON 역 직렬화

  25. 25

    GSON 직렬화를 위해 상속에서 필드 유형 덮어 쓰기

  26. 26

    강력한 형식의 개체로 JSON 응답을 직접 역 직렬화 할 때 필드를 피하는 방법은 무엇입니까?

  27. 27

    Newtonsoft.Json을 사용한 열거 형 역 직렬화

  28. 28

    포함 된 형식을 사용한 역 직렬화 JSON

  29. 29

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

뜨겁다태그

보관