将 json 文件传递到 Hashtable<String, String>
Passing json file into 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");
//...
}
如果您想在 Hashtable
中同时使用 Date
和 Hashtable
作为值,那么它的类型应该是 Hashtable<String, Object>
。然而,使用像 JSONObject
这样的库对象会更容易。您可以使用构造函数 JSONObject(java.lang.String source)
从 JSON 构造它。它有像 getJSONObject
这样的方法,它将 return 另一个 JSONOBject
(这是一种 table)作为你的 Data1
键。它没有内置的日期获取函数,因此您必须 getString
并自己编写转换
然后解析这个字符串
JSONObject 作业 =new JSONObject("yourJsonString");
注意:(yourJsonString) 是一个字符串,不是你的 hashTable
字符串日期=job.getString("date"); //这将为您提供字符串格式的日期
现在使用您的 GregorianCalendar API 将您的字符串转换为日期。
您必须将日期字符串解析为日期对象,并根据您的 JSON 创建一个 table。
鉴于您正在使用 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;
}
对于 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);
我已将 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");
//...
}
如果您想在 Hashtable
中同时使用 Date
和 Hashtable
作为值,那么它的类型应该是 Hashtable<String, Object>
。然而,使用像 JSONObject
这样的库对象会更容易。您可以使用构造函数 JSONObject(java.lang.String source)
从 JSON 构造它。它有像 getJSONObject
这样的方法,它将 return 另一个 JSONOBject
(这是一种 table)作为你的 Data1
键。它没有内置的日期获取函数,因此您必须 getString
并自己编写转换
然后解析这个字符串 JSONObject 作业 =new JSONObject("yourJsonString");
注意:(yourJsonString) 是一个字符串,不是你的 hashTable
字符串日期=job.getString("date"); //这将为您提供字符串格式的日期
现在使用您的 GregorianCalendar API 将您的字符串转换为日期。
您必须将日期字符串解析为日期对象,并根据您的 JSON 创建一个 table。
鉴于您正在使用 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;
}
对于 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);