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

아담

JSON을 내가 만든 Java Bean으로 역 직렬화 / 직렬화하려고합니다. 잭슨과이 노력이 정말 처음 이니 참아주세요. 다음이 있습니다.

{
  "foo": {
    "firstBlock": {
      "myValue": 1,
      "someBool": true,
      "stringValue": "OK"
    },
    "anotherBlock": {
      "values": [
        {
          "yikes01": 42
        },
        {
          "yikes02": 215
        }
      ],
      "myInt": 64,
      "logging": "Yes"
    }
  }
}

내 Java bean은 JSON의 객체가 반복적으로 사용됨에 따라 여러 개로 나뉩니다.

@JsonRootName("foo")
public class FooBean {
  private FirstBlockBean firstBlock;
  private AnotherBlockBean anotherBlock;

  @JsonGetter("firstBlock")
  public FirstBlockBean getFirstBlock() { return firstBlock; }

  @JsonSetter("firstBlock")
  public void setFirstBlock(FirstBlockBean firstBlock) { this.firstBlock = firstBlock; }

  @JsonGetter("anotherBlock")
  public AnotherBlockBean getAnotherBlock() { return anotherBlock; }

  @JsonSetter("firstBlock")
  public void setAnotherBlock(AnotherBlockBean anotherBlock) { this.anotherBlock = anotherBlock; }
}

@JsonRootName("firstBlock")
public class FirstBlockBean {

  private int myValue;
  private Boolean someBool;
  private String stringValue;

  @JsonGetter("myValue")
  public int getMyValue() { return myValue; }

  @JsonSetter("myValue")
  public void setMyValue(int myValue) { this.myValue = myValue; }

  @JsonGetter("someBool")
  public Boolean getSomeBool() { return someBool; }

  @JsonSetter("someBool")
  public void setSomeBool(Boolean someBool) { this.someBool = someBool; }

  @JsonGetter("stringValue")
  public String getStringValue() { return stringValue; }

  @JsonSetter("someBool")
  public void setStringValue(String stringValue) { this.stringValue = stringValue; }
}

... 그리고 AnotherBlockBean비슷한 방식으로 구현 된 클래스 (간결성을 위해 생략했습니다.) 저는 이것을 위해 Jackson을 사용하고 있습니다. 제 질문은-이 경우에 대해 Jackson에 직렬화 및 역 직렬화를위한 메커니즘이 있습니까? 이상적으로 나는 (여기에서 Google 검색이나 검색을 통해 아무것도 표시 할 수 없었기 때문에 아래의 의사 코드) 줄을 따라 뭔가를 원합니다.

// Assume "node" contains a JsonNode for the tree and foo is an uninitialized FooBean class object.
JsonHelper.deserialize(node, FooBean.class, foo);

이 시점에서 값을 다시 읽을 수 있습니다.

int i = foo.getFirstBlock().getMyValue();
System.out.println("i = " + i); // i = 1

마찬가지로 foo 인스턴스를 가져 와서 다른 메서드를 사용하여 JSON으로 다시 직렬화 할 수 있기를 원합니다. 이런 종류의 내장 기능을 원하거나 존재합니까?

산티아고 메디나

Jackson과 함께 작업 할 때의 주요 클래스는 ObjectMapper입니다. 많은 옵션이 있으며 사용 가능한 방법을 살펴보십시오.

이것은 ObjectMapper를 사용하여 Java 객체와 문자열간에 변환하는 일반적인 도우미 클래스의 예입니다.

public class JsonHelper {

    private ObjectMapper objectMapper;

    public JsonHelper(){

        this.objectMapper = new ObjectMapper();

        // Your mapping preferences here
        this.objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);
        this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        this.objectMapper.setSerializationInclusion(Include.NON_NULL);
        this.objectMapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
    }

    public String serialize(Object object) {
        try {
            return this.objectMapper.writeValueAsString(object);
        } catch (Exception e) {
            // TODO Handle exception
            return null;
        }
    }

    public <T> T deserialize(String json, Class<T> clazz) {
        try {
            return this.objectMapper.readValue(json, clazz);
        } catch (Exception e) {
            // TODO Handle exception
            return null;
        }
    }

    public <T> T deserialize(String json, TypeReference<T> valueTypeRef) {
        try {

            return this.objectMapper.readValue(json, valueTypeRef);
        } catch (Exception e) {
            // TODO Handle exception
            return null;
        }
    }
}

몇 가지 팁 :

  • getter 및 setter 메서드의 이름이 일반적인 규칙을 따르는 경우 @JsonGetter 및 @JsonSetter 주석을 생략하고 필드 선언에서 @JsonProperty 주석을 사용할 수 있습니다.
  • java 필드의 이름이 JSON의 노드 이름과 같으면 @JsonProperty 주석을 생략 할 수도 있습니다 (Jackson은 이름이 일치하는 JSON 노드 및 Java 필드를 매핑합니다).

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Json.NET을 사용하여 ArrayList의 ArrayList를 직렬화 및 역 직렬화하는 방법

분류에서Dev

Jackson JSON을 사용하여 비대칭 직렬화 및 역 직렬화가 가능합니까?

분류에서Dev

JSON.NET을 사용하여 파생 클래스로 역 직렬화

분류에서Dev

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

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

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

분류에서Dev

사전을 이진으로 직렬화 및 역 직렬화

분류에서Dev

클래스 이름을 동적 값으로 사용하여 json을 역 직렬화하는 방법

분류에서Dev

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

분류에서Dev

동적 키를 사용하여 JSON을 사전으로 역 직렬화

분류에서Dev

xsd.exe에서 XmlReader 및 클래스를 사용하여 Xml 역 직렬화

분류에서Dev

JSON 역 직렬화에 Scala Jackson을 사용하십니까?

분류에서Dev

Jackson 및 @JSonPOJOBuilder를 사용하여 JSON을 역 직렬화하는 동안 파서 컨텍스트를 검색하는 방법

분류에서Dev

@JsonTypeInfo 및 @JsonSubTypes를 사용하여 JSON을 다형성 개체 모델로 역 직렬화하지 않습니까?

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

JSON 및 Python을 사용하여 객체 목록 직렬화 / 비 직렬화

분류에서Dev

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

분류에서Dev

Java 및 Simple XML serialiser / deserialiser를 사용하여 XML 파일 역 직렬화

분류에서Dev

JSON.NET C #을 사용하여 내부 클래스가있는 json 파일로 역 직렬화

분류에서Dev

JSON 직렬 변환기를 사용하여 Mongo DB 개체 ID 역 직렬화

분류에서Dev

Unity에서 GameObject 및 Vector2를 포함하는 사전을 직렬화 및 역 직렬화하는 방법

Related 관련 기사

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    Json.NET을 사용하여 ArrayList의 ArrayList를 직렬화 및 역 직렬화하는 방법

  7. 7

    Jackson JSON을 사용하여 비대칭 직렬화 및 역 직렬화가 가능합니까?

  8. 8

    JSON.NET을 사용하여 파생 클래스로 역 직렬화

  9. 9

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

  10. 10

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  11. 11

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  12. 12

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

  13. 13

    사전을 이진으로 직렬화 및 역 직렬화

  14. 14

    클래스 이름을 동적 값으로 사용하여 json을 역 직렬화하는 방법

  15. 15

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

  16. 16

    동적 키를 사용하여 JSON을 사전으로 역 직렬화

  17. 17

    xsd.exe에서 XmlReader 및 클래스를 사용하여 Xml 역 직렬화

  18. 18

    JSON 역 직렬화에 Scala Jackson을 사용하십니까?

  19. 19

    Jackson 및 @JSonPOJOBuilder를 사용하여 JSON을 역 직렬화하는 동안 파서 컨텍스트를 검색하는 방법

  20. 20

    @JsonTypeInfo 및 @JsonSubTypes를 사용하여 JSON을 다형성 개체 모델로 역 직렬화하지 않습니까?

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    JSON 및 Python을 사용하여 객체 목록 직렬화 / 비 직렬화

  25. 25

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

  26. 26

    Java 및 Simple XML serialiser / deserialiser를 사용하여 XML 파일 역 직렬화

  27. 27

    JSON.NET C #을 사용하여 내부 클래스가있는 json 파일로 역 직렬화

  28. 28

    JSON 직렬 변환기를 사용하여 Mongo DB 개체 ID 역 직렬화

  29. 29

    Unity에서 GameObject 및 Vector2를 포함하는 사전을 직렬화 및 역 직렬화하는 방법

뜨겁다태그

보관