Jackson은 json 문자열을 역 직렬화하지만 bean에는 json 문자열의 속성 / 키가 없습니다.

알터 후

Jackson을 사용하여 json 문자열을 역 직렬화 할 때 종종 모든 빈 클래스의 속성을 만들고 싶지 않으며 json 문자열의 필드가 필요하고 필요하지 않은 다른 필드가 필요합니다. 그래서 나는 종종 내가 필요한 자바 클래스 빈에 몇 가지 속성을 작성합니다. 그러나 Jackson이 그것을 파싱하면 빈 필드에 대해 null로 반환됩니다.

1. Java Bean 클래스는 다음 GistObject과 같습니다.

public class GistObject {
   private String id;
}
  1. jackson Main 클래스 코드는 다음과 같습니다.

      String json =
            "    {\n" +
            "        \"url\": \"https://api.github.com/gists/e69fd9f9ef85eb3f30a3b93d2cc9b9b3\",\n" +
            "        \"forks_url\": \"https://api.github.com/gists/e69fd9f9ef85eb3f30a3b93d2cc9b9b3/forks\",\n" +
            "        \"commits_url\": \"https://api.github.com/gists/e69fd9f9ef85eb3f30a3b93d2cc9b9b3/commits\",\n" +
            "        \"id\": \"e69fd9f9ef85eb3f30a3b93d2cc9b9b3\",\n" +
            "        \"git_pull_url\": \"https://gist.github.com/e69fd9f9ef85eb3f30a3b93d2cc9b9b3.git\",\n" +
            "        \"git_push_url\": \"https://gist.github.com/e69fd9f9ef85eb3f30a3b93d2cc9b9b3.git\",\n" +
            "        \"html_url\": \"https://gist.github.com/e69fd9f9ef85eb3f30a3b93d2cc9b9b3\",\n" +
            "        \"files\": {\n" +
            "            \"sample template\": {\n" +
            "                \"filename\": \"sample template\",\n" +
            "                \"type\": \"text/plain\",\n" +
            "                \"language\": null,\n" +
            "                \"raw_url\": \"https://gist.githubusercontent.com/becauseqa-walter/e69fd9f9ef85eb3f30a3b93d2cc9b9b3/raw/a85b555ce30da1f13aa3b7db3a2756bd64462278/sample%20template\",\n" +
            "                \"size\": 877\n" +
            "            }\n" +
            "        },\n" +
            "        \"public\": false,\n" +
            "        \"created_at\": \"2017-05-16T13:28:44Z\",\n" +
            "        \"updated_at\": \"2017-05-16T13:28:44Z\",\n" +
            "        \"description\": \"\",\n" +
            "        \"comments\": 0,\n" +
            "        \"user\": null,\n" +
            "        \"comments_url\": \"https://api.github.com/gists/e69fd9f9ef85eb3f30a3b93d2cc9b9b3/comments\",\n" +
            "        \"owner\": {\n" +
            "            \"login\": \"becauseqa-walter\",\n" +
            "            \"id\": 5029046,\n" +
            "            \"avatar_url\": \"https://avatars1.githubusercontent.com/u/5029046?v=3\",\n" +
            "            \"gravatar_id\": \"\",\n" +
            "            \"url\": \"https://api.github.com/users/becauseqa-walter\",\n" +
            "            \"html_url\": \"https://github.com/becauseqa-walter\",\n" +
            "            \"followers_url\": \"https://api.github.com/users/becauseqa-walter/followers\",\n" +
            "            \"following_url\": \"https://api.github.com/users/becauseqa-walter/following{/other_user}\",\n" +
            "            \"gists_url\": \"https://api.github.com/users/becauseqa-walter/gists{/gist_id}\",\n" +
            "            \"starred_url\": \"https://api.github.com/users/becauseqa-walter/starred{/owner}{/repo}\",\n" +
            "            \"subscriptions_url\": \"https://api.github.com/users/becauseqa-walter/subscriptions\",\n" +
            "            \"organizations_url\": \"https://api.github.com/users/becauseqa-walter/orgs\",\n" +
            "            \"repos_url\": \"https://api.github.com/users/becauseqa-walter/repos\",\n" +
            "            \"events_url\": \"https://api.github.com/users/becauseqa-walter/events{/privacy}\",\n" +
            "            \"received_events_url\": \"https://api.github.com/users/becauseqa-walter/received_events\",\n" +
            "            \"type\": \"User\",\n" +
            "            \"site_admin\": false\n" +
            "        },\n" +
            "        \"truncated\": false\n" +
            "    }";
    ObjectMapper mapper=      new ObjectMapper();
    mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    GistObject gistObject =mapper.readValue(json, GistObject.class);
    

그러면 반환 된 GistObjectwith 필드 idnull예상되지 않습니다 e69fd9f9ef85eb3f30a3b93d2cc9b9b3. 그래서 SOmeone은 Java bean 클래스에 모든 json 문자열의 필드를 작성하지 않고 json 문자열을 Java bean으로 deserialize하는 방법을 알고 있습니다. 귀하의 응답에 감사드립니다!

꼼꼼한

다음과 같이 데이터 클래스에 속성 ID에 대한 setter를 추가해야합니다.

public static class GistObject {
    private String id;

    public void setId(String id) { this.id = id; }
}

또는 JsonProperty 주석을 사용할 수 있습니다.

public static class GistObject {
    @JsonProperty
    private String id;
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #에서 역 직렬화하는 동안 JSON 문자열에없는 속성의 초기화를 방지하는 방법은 무엇입니까?

분류에서Dev

예측할 수없는 JSON 속성을 문자열로 역 직렬화

분류에서Dev

Json.NET은 json 문자열을 역 직렬화 또는 직렬화하고 속성을 런타임에 정의 된 다른 속성 이름에 매핑합니다.

분류에서Dev

Json.Net은 문자열 내부에서 JSON 문자열을 역 직렬화합니다.

분류에서Dev

Gson을 사용하여 JSON 역 직렬화-BEGIN_OBJECT가 필요하지만 문자열이었습니다.-Reddit의 JSON

분류에서Dev

JavaScriptSerializer. JSON에서 문자열 배열을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

json 배열과 일반 속성을 jackson의 pojo로 역 직렬화하는 방법. 어레이 만 작동

분류에서Dev

json 문자열의 역 직렬화가 null 값을 반환합니다.

분류에서Dev

Windows Phone에서 JSON 문자열을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

JSON 문자열에서 역 직렬화 할 때 내 클래스가 채워지지 않습니다.

분류에서Dev

Json.NET은 사용자 정의 getter 및 변경 불가능한 유형으로 속성을 역 직렬화하지 않습니다.

분류에서Dev

역 직렬화를 원하지 않는 JSON 문자열

분류에서Dev

Json 문자열이 역 직렬화되지 않습니다.

분류에서Dev

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

분류에서Dev

JSON.parse ()가 JSON 문자열을 포함하는 배열의 마지막 인덱스를 역 직렬화하지 못함

분류에서Dev

Newtonsoft를 사용하여 단일 문자열 또는 jarray 일 수있는 경우 JSON 속성을 역 직렬화합니다.

분류에서Dev

json 문자열에없는 enum 속성이있는 모델로 역 직렬화 할 때 System.Text.Json이 강제로 실패합니다.

분류에서Dev

C #에서 JSON 문자열의 속성 / 속성을 변경하는 방법은 무엇입니까?

분류에서Dev

C # 문자열로 시작하는 키 이름으로 JSON 역 직렬화

분류에서Dev

ServiceStack.Text json serializer는 대괄호가있는 원시 문자열을 jsv로 역 직렬화합니다.

분류에서Dev

C # Json 역 직렬화가 json 문자열의 첫 번째 문자에서 실패 함

분류에서Dev

C # 중첩 된 JSON의 일부를 개체 속성에 저장하지만 역 직렬화하지 않는 방법은 무엇입니까?

분류에서Dev

json 문자열에 동적으로 속성을 추가 하시겠습니까?

분류에서Dev

단일 속성 개체의 JSON 배열을 문자열 컬렉션으로 역 직렬화

분류에서Dev

mongo db 개체 ID 및 "\"가있는 json 직렬화 된 문자열을 구문 분석 할 수 없습니다.

분류에서Dev

RestSharp는 내 JSON 응답을 제대로 자동 역 직렬화 할 수 없지만 JSON.NET은 할 수 있습니다. 이유는 무엇입니까?

분류에서Dev

JSON 문자열을 열거 형으로 역 직렬화하는 방법

분류에서Dev

Json 스키마를 Json 문자열 또는 개체로 역 직렬화

분류에서Dev

mvc4의 컨트롤러에 Json 문자열을 보내고 json을 역 직렬화하는 방법

Related 관련 기사

  1. 1

    C #에서 역 직렬화하는 동안 JSON 문자열에없는 속성의 초기화를 방지하는 방법은 무엇입니까?

  2. 2

    예측할 수없는 JSON 속성을 문자열로 역 직렬화

  3. 3

    Json.NET은 json 문자열을 역 직렬화 또는 직렬화하고 속성을 런타임에 정의 된 다른 속성 이름에 매핑합니다.

  4. 4

    Json.Net은 문자열 내부에서 JSON 문자열을 역 직렬화합니다.

  5. 5

    Gson을 사용하여 JSON 역 직렬화-BEGIN_OBJECT가 필요하지만 문자열이었습니다.-Reddit의 JSON

  6. 6

    JavaScriptSerializer. JSON에서 문자열 배열을 역 직렬화하는 방법은 무엇입니까?

  7. 7

    json 배열과 일반 속성을 jackson의 pojo로 역 직렬화하는 방법. 어레이 만 작동

  8. 8

    json 문자열의 역 직렬화가 null 값을 반환합니다.

  9. 9

    Windows Phone에서 JSON 문자열을 역 직렬화하는 방법은 무엇입니까?

  10. 10

    JSON 문자열에서 역 직렬화 할 때 내 클래스가 채워지지 않습니다.

  11. 11

    Json.NET은 사용자 정의 getter 및 변경 불가능한 유형으로 속성을 역 직렬화하지 않습니다.

  12. 12

    역 직렬화를 원하지 않는 JSON 문자열

  13. 13

    Json 문자열이 역 직렬화되지 않습니다.

  14. 14

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

  15. 15

    JSON.parse ()가 JSON 문자열을 포함하는 배열의 마지막 인덱스를 역 직렬화하지 못함

  16. 16

    Newtonsoft를 사용하여 단일 문자열 또는 jarray 일 수있는 경우 JSON 속성을 역 직렬화합니다.

  17. 17

    json 문자열에없는 enum 속성이있는 모델로 역 직렬화 할 때 System.Text.Json이 강제로 실패합니다.

  18. 18

    C #에서 JSON 문자열의 속성 / 속성을 변경하는 방법은 무엇입니까?

  19. 19

    C # 문자열로 시작하는 키 이름으로 JSON 역 직렬화

  20. 20

    ServiceStack.Text json serializer는 대괄호가있는 원시 문자열을 jsv로 역 직렬화합니다.

  21. 21

    C # Json 역 직렬화가 json 문자열의 첫 번째 문자에서 실패 함

  22. 22

    C # 중첩 된 JSON의 일부를 개체 속성에 저장하지만 역 직렬화하지 않는 방법은 무엇입니까?

  23. 23

    json 문자열에 동적으로 속성을 추가 하시겠습니까?

  24. 24

    단일 속성 개체의 JSON 배열을 문자열 컬렉션으로 역 직렬화

  25. 25

    mongo db 개체 ID 및 "\"가있는 json 직렬화 된 문자열을 구문 분석 할 수 없습니다.

  26. 26

    RestSharp는 내 JSON 응답을 제대로 자동 역 직렬화 할 수 없지만 JSON.NET은 할 수 있습니다. 이유는 무엇입니까?

  27. 27

    JSON 문자열을 열거 형으로 역 직렬화하는 방법

  28. 28

    Json 스키마를 Json 문자열 또는 개체로 역 직렬화

  29. 29

    mvc4의 컨트롤러에 Json 문자열을 보내고 json을 역 직렬화하는 방법

뜨겁다태그

보관