Jackson ObjectMapper는 배열로 객체를 역 직렬화합니다.

houcros

여기여기에 비슷한 질문이 있지만 내 상황과 완전히 일치하지 않습니다. 내 JSON 문자열은 배열이있는 객체로 구성됩니다.

{
  "data": [
    {
      "id": 1,
      "title": "Sample training",
      "date": "2016-10-03 10:00:00",
      "subscription": "2016-09-20 12:34:50"
    },
    {
      "id": 2,
      "title": "Second training",
      "date": "2016-10-06 10:00:00",
      "subscription": "2016-09-20 12:54:50"
    }
  ]
}

배열의 각 객체는 Java Bean입니다.

public class TrainingInfo {

    private int id;
    private String title;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime date;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime subscription;

    // Consructors, getters and setters omitted 
    // ...
}

다음으로 싱글을 읽을 수 TrainingInfo있습니다.

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
TrainingInfo training = mapper.readValue(jsonTrainingInfo, TrainingInfo.class);

하지만 전체 배열을 읽을 수 없습니다. 나는 배열을 포함하는 새로운 Java bean을 만들고 다음과 같이 읽으려고했습니다.

private class TrainingsArray {
    private TrainingInfo[] data;

    public TrainingInfo[] getData() {
        return data;
    }

    public void setData(TrainingInfo[] data) {
        this.data = data;
    }
}

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
TrainingsArray trainings = mapper.readValue(jsonTrainingsArray, TrainingsArray.class);

그러나 이것은 단지 IOException. 내가 무엇을 놓치고 있습니까?

업데이트 : 예외 발생 :

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of JsonMapperTest$TrainingsArray: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)
 at [Source: {
  "data": [
    {
      "id": 1,
      "title": "Sample training",
      "date": "2016-10-03 10:00:00",
      "subscription": "2016-09-20 12:34:50"
    },
    {
      "id": 2,
      "title": "Second training",
      "date": "2016-10-06 10:00:00",
      "subscription": "2016-09-20 12:54:50"
    }
  ]
}; line: 2, column: 3]

    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:270)
    at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:1456)
    at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1012)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1205)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:314)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:148)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3798)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2842)
    at JsonMapperTest.shouldMapJsonResponseToTrainingsArray(JsonMapperTest.java:90)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
houcros

어리석은 일이지만 해결책은 수업을 TrainingsArray공개 하는 것이 었습니다 .

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JSON 객체를 Jackson과 Kotlin Pair로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

JsonPath / Jackson : JSON 배열을 단일 객체 ( "[1,2,3]"-> Vector3d 인스턴스)로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

Jackson으로 Java 배열 역 직렬화

분류에서Dev

다양한 유형의 객체를 포함하는 JSON 배열 역 직렬화

분류에서Dev

객체를 역 직렬화 할 때 Apache Camel에서 예외가 발생합니다. com.fasterxml.jackson.core.JsonParseException : 인식 할 수없는 토큰

분류에서Dev

XML 역 직렬화 (루트 객체가 배열 인 경우)는 단일 요소 만 반환합니다.

분류에서Dev

Jackson은 주석없이 POJO로 역 직렬화합니다.

분류에서Dev

Jackson은 Generics를 사용하여 역 직렬화합니다.

분류에서Dev

Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

분류에서Dev

null Jackson 노드를 컬렉션으로 역 직렬화하는 데 문제가 있습니다.

분류에서Dev

JSON 데이터를 모델 객체의 배열로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

Jackson을 사용하여 키를 무시하는 객체로 JSON을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

직렬화 가능한 객체의 배열로 클래스를 역 직렬화하는 방법

분류에서Dev

Jackson API-간단한 동적 객체로 JSON 역 직렬화

분류에서Dev

Foo 유형의 모든 필드를 SubclassOfFoo의 인스턴스로 역 직렬화하도록 Jackson ObjectMapper를 구성하려면 어떻게해야합니까?

분류에서Dev

Newton JSON은 객체로 역 직렬화합니다.

분류에서Dev

키 변수 jackson 맵 ObjectMapper가있는 JSON 역 직렬화

분류에서Dev

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

분류에서Dev

객체를 사전으로 역 직렬화하는 JSON

분류에서Dev

Spring MVC : Jackson objectMapper를 사용하여 쿼리 매개 변수를 POJO로 역 직렬화

분류에서Dev

Jackson : 문자열 배열을 List <T>로 역 직렬화

분류에서Dev

일반 객체를 문자열로 직렬화 / 역 직렬화

분류에서Dev

C #에서는 간단한 JSON 개체를 정수 목록으로 역 직렬화합니다.

분류에서Dev

Jackson 2 주석에서 역 직렬화 할 때 JSON에서 래퍼 객체를 생략하는 방법

분류에서Dev

속성 이름과 JsonProperty로 JSON을 객체로 역 직렬화합니다.

분류에서Dev

JavaScriptSerializer로 JSON 문자열을 역 직렬화하여 키 및 값 배열 대신 단일 동적 객체를 반환합니다.

분류에서Dev

배열 또는 중첩 배열을 포함 할 수있는 JSon의 객체로 Json.net 역 직렬화

분류에서Dev

JSON 문자열을 객체로 역 직렬화하는 방법

Related 관련 기사

  1. 1

    JSON 객체를 Jackson과 Kotlin Pair로 역 직렬화하는 방법은 무엇입니까?

  2. 2

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

  3. 3

    JsonPath / Jackson : JSON 배열을 단일 객체 ( "[1,2,3]"-> Vector3d 인스턴스)로 역 직렬화하는 방법은 무엇입니까?

  4. 4

    Jackson으로 Java 배열 역 직렬화

  5. 5

    다양한 유형의 객체를 포함하는 JSON 배열 역 직렬화

  6. 6

    객체를 역 직렬화 할 때 Apache Camel에서 예외가 발생합니다. com.fasterxml.jackson.core.JsonParseException : 인식 할 수없는 토큰

  7. 7

    XML 역 직렬화 (루트 객체가 배열 인 경우)는 단일 요소 만 반환합니다.

  8. 8

    Jackson은 주석없이 POJO로 역 직렬화합니다.

  9. 9

    Jackson은 Generics를 사용하여 역 직렬화합니다.

  10. 10

    Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

  11. 11

    null Jackson 노드를 컬렉션으로 역 직렬화하는 데 문제가 있습니다.

  12. 12

    JSON 데이터를 모델 객체의 배열로 역 직렬화하는 방법은 무엇입니까?

  13. 13

    Jackson을 사용하여 키를 무시하는 객체로 JSON을 역 직렬화하는 방법은 무엇입니까?

  14. 14

    직렬화 가능한 객체의 배열로 클래스를 역 직렬화하는 방법

  15. 15

    Jackson API-간단한 동적 객체로 JSON 역 직렬화

  16. 16

    Foo 유형의 모든 필드를 SubclassOfFoo의 인스턴스로 역 직렬화하도록 Jackson ObjectMapper를 구성하려면 어떻게해야합니까?

  17. 17

    Newton JSON은 객체로 역 직렬화합니다.

  18. 18

    키 변수 jackson 맵 ObjectMapper가있는 JSON 역 직렬화

  19. 19

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

  20. 20

    객체를 사전으로 역 직렬화하는 JSON

  21. 21

    Spring MVC : Jackson objectMapper를 사용하여 쿼리 매개 변수를 POJO로 역 직렬화

  22. 22

    Jackson : 문자열 배열을 List <T>로 역 직렬화

  23. 23

    일반 객체를 문자열로 직렬화 / 역 직렬화

  24. 24

    C #에서는 간단한 JSON 개체를 정수 목록으로 역 직렬화합니다.

  25. 25

    Jackson 2 주석에서 역 직렬화 할 때 JSON에서 래퍼 객체를 생략하는 방법

  26. 26

    속성 이름과 JsonProperty로 JSON을 객체로 역 직렬화합니다.

  27. 27

    JavaScriptSerializer로 JSON 문자열을 역 직렬화하여 키 및 값 배열 대신 단일 동적 객체를 반환합니다.

  28. 28

    배열 또는 중첩 배열을 포함 할 수있는 JSon의 객체로 Json.net 역 직렬화

  29. 29

    JSON 문자열을 객체로 역 직렬화하는 방법

뜨겁다태그

보관