2017-02-14 346 views
0

我有一個JSON對象,我試圖從Jackson API Object Mapper中讀取。mapper.readValue()返回null值(Jackson API)

{ 
    "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 
} 

我以前看過這個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?請幫忙。

+0

「我沒有收到任何錯誤」,因爲顯示的單個catch塊是您的最後一個片段而忽略捕獲的異常。你確定它不拋出IOException嗎? – cybersoft

+0

它也不會趕上塊。沒有錯誤,沒有例外。 – Shashank

回答

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類開始發揮作用。