Java 将json文件传递到哈希表

Java 将json文件传递到哈希表,java,json,hashtable,Java,Json,Hashtable,我已将json文件传递到哈希表参数: 将数据读入字符串String st=params.getDate很简单。但我想将Date保存为GregoriaCalendar,将Data1保存为Hashtable。我该怎么做 public double getEstimation(Hashtable<String, String> params) { GregorianCalendar cal = params.get("Date"); Hashtable<String, St

我已将json文件传递到哈希表参数:

将数据读入字符串String st=params.getDate很简单。但我想将Date保存为GregoriaCalendar,将Data1保存为Hashtable。我该怎么做

public double getEstimation(Hashtable<String, String> params) 
{
  GregorianCalendar cal = params.get("Date");
  Hashtable<String, String> data = params.get("Data1");
  //...
}
如果希望在哈希表中同时使用Date和Hashtable作为值,那么它应该具有Hashtable的类型。但是,使用类似的库对象更容易。您可以使用构造函数JSONObjectjava.lang.String source从JSON构造它。它有一些方法,比如getJSONObject,它将返回另一个JSONOBject,这是一种用于Data1键的表。它没有内置日期获取函数,因此您必须先获取字符串并自己编写转换

然后解析这个字符串 JSONObject作业=新建JSONObject YourJSONString

注意:yourJsonString它是一个字符串,而不是哈希表

字符串日期=job.getStringdate//这将为您提供字符串格式的日期


现在使用GregoriaCalendar API将字符串转换为日期。

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

对于使用org.JSON库的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"));

我想你确实有一个库来解析JSON,不是吗?@user3159253:请查看更新。我正在使用基于json创建的哈希表参数。@KlausKlausos您是如何创建该哈希表的?您可以指定用于解析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);