【问题标题】:Navigating through JSONObject Android浏览 JSONObject Android
【发布时间】:2016-03-11 09:30:29
【问题描述】:

我正在尝试实现一种能够在 JSONObject 中导航直到找到给定参数的方法。我的 JSON 的结构类似于文件夹系统。有文件夹,每个文件夹都可以有文件。一个文件夹可以有另一个文件夹等等。JSON看起来像这样:

{
  "Elements": [
{
  "file": {
    "files": [
      {
        "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
        "modified": 1457608018166, 
        "name": "Bild1" 
      }, 
      {
        "id": "0efd76e7-730e-428a-96a4-95e04844070a", 
        "modified": 1457608018166, 
        "name": "Audio" 
      }, 
      {
        "files": [
          {
            "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
            "modified": 1457608018166, 
            "name": "Bild2" 
          }, 
          {
            "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
            "modified": 1457608018166, 
            "name": "Bild3" 
          }, 
          {
            "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
            "modified": 1457608018166, 
            "name": "Bild4" 
          }
        ], 
        "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
        "name": "FolderInRoot"
      }
    ], 
    "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
    "name": "RootFolder"
  }
}, 
{
  "file": {
    "files": [], 
    "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
    "name": "AnotherRootFolder"
  }
}
  ]
}

例如,我想编辑路径为“/RootFolder/FolderInRoot/Bild2”的“Bild2”。有人有一种导航到给定位置的方法。路径应该是参数。

【问题讨论】:

    标签: java android json jsonobject


    【解决方案1】:

    您需要遍历 JSON 响应,直到达到正确的深度,然后您可以使用 getString("name") 获取该键(即 Bild2)处的内容。从对象/键中获取内容后,您可以将其添加到 List 或 Map 以迭代或对数据执行任何其他操作。有关更多信息,请参阅此 StackOverflow 问题:Java loop over Json array?

    您可能还想考虑使用 Gson 库来简化解析。如果您能够将 Gson 添加到项目中(我建议您这样做),那么有很多很棒的教程用于解析数据并将 JSON 反序列化为纯 Java 对象(这将使您免去嵌套循环的麻烦)。 Using GSON in Android to parse a complex JSON objecthttp://blog.nkdroidsolutions.com/how-to-parsing-json-array-using-gson-in-android-tutorial/ 是两个很好的入门资源。

    (附注:如果可能,您可能需要考虑简化 JSON 结构,因为这样会更容易使用)。

    【讨论】:

    • 你能给我一个提示如何展平我的 Json 吗?!
    • 好吧,当我说扁平化时,我只是指简化结构——尝试尽可能多地抛弃 JSON 层,即使这意味着复制一些数据。如果你不能,那么尽你最大的努力使 Java 解析代码尽可能可读。就像我在答案中所说的那样,如果您能够添加依赖项,请使用 Gson 的 JsonObject/JsonArray 而不是普通的 Java 的 JSONObject/JSONArray。 stackoverflow.com/questions/20379387/…blog.nkdroidsolutions.com/…
    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多