【问题标题】:Passing json file into Hashtable<String, String>将 json 文件传递​​到 Hashtable<String, String>
【发布时间】:2015-11-26 13:22:09
【问题描述】:

我已将 json 文件传递​​到 Hashtable&lt;String, String&gt; 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");
  //...
}

【问题讨论】:

  • 我想你确实有一个库来解析 JSON,不是吗?
  • @user3159253:请查看更新。我正在使用基于 json 创建的 Hashtable 参数。
  • @KlausosKlausos 你是如何创建这个哈希表的?
  • 你能指定你使用什么库来解析 JSON 吗?

标签: java json hashtable


【解决方案1】:

如果您想将DateHashtable 作为Hashtable 中的值,那么它的类型应该是Hashtable&lt;String, Object&gt;。然而,使用像JSONObject 这样的库对象更容易。您可以使用构造函数 JSONObject(java.lang.String source) 从 JSON 构造它。它有像getJSONObject 这样的方法,它将为您的Data1 键返回另一个JSONOBject(这是一种表)。它没有内置的日期获取功能,因此您必须getString并自己编写转换

【讨论】:

    【解决方案2】:

    首先Use this library

    然后解析这个字符串 JSONObject 作业 =new JSONObject("yourJsonString");

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

    字符串日期=job.getString("日期"); //这将为您提供字符串格式的日期

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-02-16
          • 1970-01-01
          • 2015-11-20
          • 2015-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多