将json文件传递给Hashtable <string,string =“”>

时间:2015-09-01 10:31:36

标签: java json hashtable

我已将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 个答案:

答案 0 :(得分:0)

如果您想在Date中同时使用HashtableHashtable作为值,则其类型应为Hashtable<String, Object>。但是,使用像JSONObject这样的库对象更容易。您可以使用构造函数JSONObject(java.lang.String source)从JSON构造它。它有getJSONObject之类的方法,它会为您的JSONOBject键返回另一个Data1(这是一种表)。它没有为日期内置get函数,因此您必须getString并自己编写转换

答案 1 :(得分:0)

首先Use this library

然后解析这个字符串 JSONObject job = new JSONObject(“yourJsonString”);

注意:(yourJsonString)这是一个字符串而不是你的hashTable

String date = job.getString(“date”); //这将以字符串格式为您提供日期

现在使用您的GregorianCalendar API将您的字符串转换为日期。

答案 2 :(得分:0)

您必须将日期字符串解析为日期对象,并根据您的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;
}

答案 3 :(得分:0)

对于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);