2017-06-02 210 views
-4

下面是我的代碼:如何HashMap的轉換對象和字符串[]以JSON

public static void main(String[] args) { 

    HashMap<HierarchyFilter, String[]> filters = new HashMap(); 
    HierarchyFilter obj = new HierarchyFilter("name1", "type1", "value1"); 
    String[] a = new String[6]; 
    a[0]="String1"; 
    a[1]="String2"; 
    a[2]="String3"; 
    a[3]="String4"; 
    a[4]="String5"; 
    a[5]="String6"; 
    filters.put(obj, a); 
ObjectMapper mapper = new ObjectMapper(); 
String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(filters); 
    System.out.println(jsonString); 
    } 

我使用傑克遜映射。但是我的對象沒有正確轉換。 下面是出來把我得到:

{ 
    "[email protected]" : [ "String1", "String2", "String3", "String4", "String5", "String6" ] 
} 

我接收對象的默認的toString。 請幫助

+1

你期望輸出什麼,爲什麼? –

+0

其實我有一個類有這個HashMAp。 在UI中,我需要獲取對象的時間信息String []被映射。所以我把信息作爲json發送到前端。 –

+0

我不明白你寫了什麼。請編輯您的問題以反映您想要的JSON。 –

回答

1

如果你期待傑克遜的"[email protected]"到JSON的價值觀"name1", "type1", "value1"映射,那麼你期待的無效 JSON,傑克遜映射不會做。

JSON映射數據結構是JSON對象數據結構,它是名稱/值對的集合,其中元素名稱必須是字符串。 JSON映射鍵也必須是字符串,因爲JSON映射是JSON對象。因此,當您嘗試使用HierarchyFilter密鑰時,它會使用該對象的toString方法(字符串值)將其用作Key。

爲了實現您需要發送給UI的內容,請決定合適的JSON結構合約,然後相應地設計您的Object類/響應對象。

+0

謝謝。我將我的變量重構爲Map 過濾器,並按預期工作 –

相關問題