mapper.readValue()返回null值(Jackson API)

时间:2017-02-14 08:26:56

标签: java json jackson

我有一个JSON对象,我试图从Jackson API Object Mapper中读取。

{  
   "ddt_id":"605",
   "ddt_batch_code":"5769005b-e8f0-4ae8-8971-1c59ac1f02fd",
   "keyword":"ADP",
   "keyword_operation":"and",
   "keyword_extract_match":"F",
   "search_in":"name",
   "filter_type":"entity,others",
   "category":"2,3,5",
   "gender":"",
   "date_year":"",
   "date_month":"",
   "date_day":"",
   "country":"",
   "search_filter_uuid":"570bd722-315c-40b3-b2d6-4522ac1f02fd",
   "ddt_qsk_question":"0",
   "search_for":"all",
   "search_category":"2,3,5",
   "search_includes_name":"T",
   "search_includes_profile_notes":"F",
   "search_for_person":"F",
   "search_for_entity":"T",
   "search_for_others":"T",
   "search_from_module":"DDMT.V.2.20",
   "client_id":667,
   "ip_address":"52.23.94.13",
   "search_requester_id":false,
   "search_requester_name":false,
   "batch_id":"5769005b-e8f0-4ae8-8971-1c59ac1f02fd",
   "person_query_index":4,
   "company_query_index":4,
   "is_ongoing":1
}

用于在Object中读取此JSON的类是:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.UUID;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class SswltSearchParams {
    @JsonProperty("batch_id")
    private UUID batchId;

    @JsonProperty("country")
    private String country;

    @JsonProperty("criteria_id")
    private String id;

    @JsonProperty("date_day")
    private Integer day;

    @JsonProperty("date_month")
    private Integer month;

    @JsonProperty("date_year")
    private Integer year;

    @JsonProperty("gender")
    private String gender;

    @JsonProperty("keyword")
    private String keyword;

    @JsonProperty("keyword_exact_match")
    private String keywordExactMatch;

    @JsonProperty("keyword_operation")
    private String keywordOperation;

    @JsonProperty("search_category")
    private String searchCategory;

    @JsonProperty("search_for")
    private String searchFor;

    @JsonProperty("search_for_anti_corruption")
    private String searchForAntiCorruption;

    @JsonProperty("search_for_entity")
    private String searchForEntity;

    @JsonProperty("search_for_others")
    private String searchForOthers;

    @JsonProperty("search_for_person")
    private String searchForPerson;

    @JsonProperty("search_for_watchlist")
    private String searchForWatchlist;

    @JsonProperty("search_includes_name")
    private String searchIncludesName;

    @JsonProperty("search_includes_profile_notes")
    private String searchIncludesProfileNotes;

    @JsonProperty("update_only")
    private String updateOnly;

   // getters and setters
}

当我尝试将此JSON放在Onject中时,我没有收到任何错误,但我收到了NULL值。

try {
            SswltMigrationCollection sswltSearchParams = mapper.readValue(searchCriteria.getScrCriteria(), SswltSearchParams.class);
        } catch (IOException e) {
            return null;
        }

为什么我将此sswltSearchParams设为null?请帮助。

1 个答案:

答案 0 :(得分:0)

您的JSON可以毫无问题地解析为SswltSearchParams实例。以下代码工作正常:

String json = "{\"ddt_id\":\"605\",\"ddt_batch_code\":\"5769005b-e8f0-4ae8-8971-1c59ac1f02fd\",\"keyword\":\"ADP\",\"keyword_operation\":\"and\",\"keyword_extract_match\":\"F\",\"search_in\":\"name\",\"filter_type\":\"entity,others\",\"category\":\"2,3,5\",\"gender\":\"\",\"date_year\":\"\",\"date_month\":\"\",\"date_day\":\"\",\"country\":\"\",\"search_filter_uuid\":\"570bd722-315c-40b3-b2d6-4522ac1f02fd\",\"ddt_qsk_question\":\"0\",\"search_for\":\"all\",\"search_category\":\"2,3,5\",\"search_includes_name\":\"T\",\"search_includes_profile_notes\":\"F\",\"search_for_person\":\"F\",\"search_for_entity\":\"T\",\"search_for_others\":\"T\",\"search_from_module\":\"DDMT.V.2.20\",\"client_id\":667,\"ip_address\":\"52.23.94.13\",\"search_requester_id\":false,\"search_requester_name\":false,\"batch_id\":\"5769005b-e8f0-4ae8-8971-1c59ac1f02fd\",\"person_query_index\":4,\"company_query_index\":4,\"is_ongoing\":1}";

ObjectMapper mapper = new ObjectMapper();
SswltSearchParams sswltSearchParams = mapper.readValue(json, SswltSearchParams.class);

不确定为什么SswltMigrationCollection课程发挥作用。