2016-03-10 93 views
0

我有以下json字符串: -JSON到Java對象returing LinkedHashMap的

{"name":"Test","sortlist":[],"filterlist":[{"fieldname":"regions_id","operator":"equals","value":{"id":1,"code":"HIGH","description":"HIGH Region","comment":"High Region","active":true}}]} 

和Java如下類: -

@JsonSerialize 
@JsonDeserialize 
public class ItemFilter implements Serializable { 

    private String name; 
    private List<FieldFilter> filterlist = new ArrayList<FieldFilter>(); 

} 

public class FieldFilter implements Serializable { 

    private static final long serialVersionUID = 1L; 

    private String fieldname; 
    private String operator; 
    private Object value; 
} 

和我的轉換方法如下: -

public static ItemFilter convertItemFilter(String item) { 
     ObjectMapper mapper = new ObjectMapper(); 

     try { 
      ItemFilter itemFilter = mapper.readValue(item, new TypeReference<ItemFilter>(){}); 
      return itemFilter; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
} 

ItemFilter域得到正確,但在private Object value;場轉換我得到LinkedHashMap我希望得到一個簡單的對象,後來我將類型轉換它。

是否有人可以指導我如何逃脫LinkedHashMap並獲得變量的簡單JavaObject

我不能使用硬編碼對象類型,因爲它的一個通用POJO其可以具有任何對象類型。硬編碼將使這個pojo更大,前端也需要改變它。所以我爲什麼使用Object作爲數據類型。

+0

這是一個問題。如果它轉換爲對象的類型,然後在那裏將它保存'「ID」的值:1,「代碼」:「HIGH」,「說明」:「高速區域」,「評論」:「高區」,」主動「:TRUE'? 由於無法找到ID,代碼的任何相關領域,...這將其轉換爲LinkedHashMap中,並在地圖上設置這些值。 由於周圍的工作,你爲什麼不創建字段值的** **制定者和呼叫變壓器API,它變換是這個LinkedHashMap中成你想要的對象類型? –

回答

-1

下面的類結構應該返回JSON爲「YourObject」

public class YourObject{ 
    private String name; 
    private List<String> sortList; 
    private List<Filter> filterList; 

public static class Filter{ 
    private String fieldname; 
    private String operator; 
    private Value value; 

} 
public static class Value{ 
    private Integer id; 
    private String code; 
    private String description; 
    private String comment; 
    private Boolean active; 
} 
} 

然後使用以下讀取到的對象:

YourObject itemFilter = mapper.readValue(item, YourObject.class); 
+0

我不能使用它,因爲它可以有任何對象類型的泛型pojo。硬編碼對象類型無法使用。 –