JSON - это простое текстовое представление данных, следующая страница на самом деле определяет синтаксис JSON на одной короткой странице HTML http://json.org/.
Как вы можете видеть, основные строительные блоки - это объекты и массивы, а некоторые типы данных (номер строки Boolean и null).
Если вам нужна карта хэша, вы можете принять тот факт, что базовые члены объекта - это словарь, где ключ должен быть строкой, а значение - и объектом (или массивом в случае, если один и тот же интервал времени расходы).
Итак, теперь вам нужно предоставить свою собственную бизнес-логику, чтобы предоставить уникальное строковое представление для вашего TimeInterval, которое может быть проанализировано обратно на объект в коде, который потребляет json.
Скажем, например, значение времени начала и конца TimeInterval разделенных «-»
е, г. Ваше время TimeInterval ToString будет выглядеть
@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 являются ключами, а стоимость - значениями в полученном результате Hashmap –
@naresh kumar yes. – SanjeevGhimire
Наличие сложного объекта в качестве ключа карты - плохая практика. –