【问题标题】:Parsing JSON in Java with org.Json?用 org.Json 在 Java 中解析 JSON?
【发布时间】:2013-10-20 23:00:36
【问题描述】:

我对此感到很困惑。我正在尝试使用更新程序,并且我正在使用从 url 返回的 api。:JSON

[
   {
      "downloadUrl":"URL",
      "fileName":"Name",
      "gameVersion":"Version",
      "name":"Name",
      "projectId":ID,
      "releaseType":"beta"
   },
   {
      "downloadUrl":"URL",
      "fileName":"Name",
      "gameVersion":"Version",
      "name":"Name",
      "projectId":ID,
      "releaseType":"beta"
   }
]

如何从 URL 返回的 JSON 中获取数据。我不想使用“第 3 方”解析器。谢谢。另外,我被困在这部分:

我知道我需要遍历一个数组,但没有主数组,除非它是“”。 ?这就是让我感到困惑的地方。如何从 url 解析这个 JSON?

我看到有人这样做,但我知道这是否会在我的 JSON 中起作用? Parsing JSON Object in Java

【问题讨论】:

  • 那么你想用什么解析器呢?
  • 在这种情况下,我会自己解析它......用JSONArray等
  • 觉得他想自己写
  • 其实没那么难。我用大约 500 行代码为 Qt 编写了一个——花了一天左右的时间,IIRC。当然,我有 40 年的编程经验。
  • @HotLicks 是的,问题是,这是我学习 Java 的第二周,到目前为止还不错。

标签: java json parsing org.json


【解决方案1】:

在这种情况下,您的数据是一个对象数组,可以存储到 HashMap 对象中。因此,我们将检索数组中的每个对象并将它们添加到每个 HashMap 中。 HashMap 通过使用键插入值来工作,即HashMap<key type,value type>。要使用键存储值,请使用HashMap.put(key,value),例如map.put("downloadUrl", "URL")

// Remove the spacings yourself before trying the code
JSONArray array = new JSONArray("[
   {
      "downloadUrl":"URL",
      "fileName":"Name",
      "gameVersion":"Version",
      "name":"Name",
      "projectId":ID,
      "releaseType":"beta"
   },
   {
      "downloadUrl":"URL",
      "fileName":"Name",
      "gameVersion":"Version",
      "name":"Name",
      "projectId":ID,
      "releaseType":"beta"
   }
]");

List<HashMap<String,String>> list = new ArrayList<HashMap<String,String>();
for(int i = 0 ; i < array.length() ; i++){
    HashMap<String,String> ht = new HashMap<String,String>();
    JSONObject o = json.getJSONObject(i);
    map.put("downloadUrl",o.getString("downloadUrl");
    map.put("fileName",o.getString("fileName");
    map.put("gameVersion",o.getString("gameVersion");
    map.put("name",o.getString("Name"));
    map.put("projectId",o.getString("projectId");
    map.put("releaseType",o.getString("releaseType");
    list.add(map);
}

【讨论】:

  • 当 JSONObject 是一个哈希表时,为什么还要把它放在一个哈希表中呢?
  • 还有一件事:在一般情况下,JSON 对象中的条目可以是任何有效的 JSON 对象——不限于字符串。
  • 这只是他开始的一个例子。最理想的是,他应该自己创建一个对象类,其中包含他需要的所有属性。然而,正如他所提到的,他是一个初学者,而 Hashtable 只是他可以从 Java 库中轻松使用的一个对象。此外,Hashtable 没有被弃用,因为它仍然可以使用,因为它是同步的,而 HashMap 不是。
  • 另外,我在这种情况下使用 hashtable 的原因是因为有人评论了使用 hashtable 是可能的答案,并且 OP 询问如何实现它。
  • 这不是主观的 -- Hashtable 规范:“如果不需要线程安全的实现,建议使用 HashMap 代替 Hashtable。如果是线程安全的高并发实现是需要的,那么建议使用 ConcurrentHashMap 代替 Hashtable。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多