JSON是一個簡單的文本數據表示,下面的頁面實際上在一個簡短的HTML頁面中定義了JSON語法http://json.org/。
正如您所看到的基礎構建塊是對象和數組以及一些數據類型(字符串數字布爾值和空值)。
如果你需要一個哈希映射,你可以採取這樣一個事實,即基本對象成員有些字典中鍵必須是字符串,值是和對象(或者是一個數組,以防止相同的時間間隔費用)。
所以現在你需要提供你自己的業務邏輯來爲你的TimeInterval提供一個唯一的字符串表示,它可以解析回使用json的代碼上的對象。
比方說,例如,通過分離的TimeInterval所開始和結束的時間價值「 - 」
E,G。你的時間的toString TimeInterval所會像
@Override
public String toString() {
//start and end are of type Date
return start.getTime()+"-"+end.getTime();
}
現在生成的JSON的樣子
{
"1420667419892-1420698059892" : {
"ammount" : 10.9,
"currency" : "USD"
},
"1420698059892-1420706699892" : {
"ammount" : 10.9,
"currency" : "ERO"
}
}
但如果是TimeInterval所更加複雜,上面的選項是不可能的。您將需要TimeInterval所一些代理鍵,那麼你必須創建結束語對象,將包括你字典和一組或現有IntervalIdToCost
public class TimeToCostMapWarpper {
//Map TimeInterval.Id to Cost
Map<String, Cost> intervalIdToCost = new HashMap<>();
Set<TimeInterval> timeIntervals = new HashSet<>();
//getter/setter...
}
現在你會序列化包裝對象,並會得到類似:
{
"intervalIdToCost" : {
"1f3fe6cf-7afe-4575-b8b2-bbe2067a99bd" : {
"ammount" : 10.9,
"currency" : "ERO"
},
"d2c880ce-ef41-48f8-8f4a-0ff73449e1c3" : {
"ammount" : 10.9,
"currency" : "USD"
}
},
"timeIntervals" : [{
"id" : "1f3fe6cf-7afe-4575-b8b2-bbe2067a99bd",
"start" : 1420702028475,
"end" : 1420710668475
}, {
"id" : "d2c880ce-ef41-48f8-8f4a-0ff73449e1c3",
"start" : 1420693388475,
"end" : 1420702028475
}
]
}
我想你可以想到其他的實現這一點,只需要記住,輸出應該包含足夠的數據來解析消費方面的結果。
因此TimeInterval的屬性是關鍵字,Cost是結果Hashmap中的值 –
@naresh kumar yes。 – SanjeevGhimire
將一些複雜對象作爲映射關鍵字是一種不好的做法。 –