Передача файла JSON в Hashtable<String, String>
Я передал файл JSON в Hashtable<String, String> params
:
{Date=2015-05-01, Data1={"Id":"1","Seating":0,"IdServiceCode":"8"}}
Это просто для чтения данных в строки (String st = params.get("Date")
). Но я хочу сохранить Date
как GregorianCalendar и Data1 как Hashtable. Как я могу это сделать?
public double getEstimation(Hashtable<String, String> params)
{
GregorianCalendar cal = params.get("Date");
Hashtable<String, String> data = params.get("Data1");
//...
}
4 ответа
Вы должны проанализировать вашу строку даты в объект даты и создать таблицу на основе вашего JSON.
Учитывая, что вы используете JSON.org, это должно сделать:
public double getEstimation(Hashtable<String, String> params) {
// not sure if date is in this format
SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdt.parse(params.get("Date"));
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
HashTable<String, String> data = jsonStringToHT(params.get("Data1"));
//...
}
private HashTable<String, String> jsonStringToHT(String json){
HashTable<String, String> ht = new HashTable<String, String>();
JSONObject jObject = new JSONObject(t);
Iterator<?> keys = jObject.keys();
while( keys.hasNext() ){
String key = (String)keys.next();
String value = jObject.getString(key);
ht.put(key, value);
}
return ht;
}
Во-первых, используйте эту библиотеку
Затем проанализируйте эту строку JSONObject job =new JSONObject("yourJsonString");
Примечание:(yourJsonString) Это строка, а не ваша хэш-таблица
String date=job.getString("date"); // Это даст вам дату в строковом формате
Теперь используйте API GregorianCalendar для преобразования вашей строки в Date.
Для JSON (с использованием библиотеки org.json):
String str = "{ \"Id\": \"1\", \"Seating\": \"0\", \"IdServiceCode\": \"8\" }";
JSONObject obj = new JSONObject(str);
Hashtable<String, String> data = new Hashtable<String, String>();
data.put ("Id",obj.getString("Id"));
data.put ("Seating",obj.getString("Seating"));
data.put ("IdServiceCode",obj.getString("IdServiceCode"));
Для даты:
DateFormat df = new SimpleDateFormat("yyyy-MM-DD");
Date date = df.parse("2015-05-01");
Calendar cal = new GregorianCalendar();
cal.setTime(date);
Если вы хотите иметь оба Date
а также Hashtable
как ценности в вашем Hashtable
то должен иметь тип Hashtable<String, Object>
, Однако проще использовать объект библиотеки, такой как JSONObject
, Вы можете построить его из JSON, используя конструктор JSONObject(java.lang.String source)
, У него есть такие методы, как getJSONObject
который вернет другое JSONOBject
(это своего рода таблица) для вашего Data1
ключ. Он не имеет встроенной функции получения дат, поэтому вам придется getString
и напиши конверсию сам