浏览 JSONObject Android

Navigating through JSONObject Android

我正在尝试实现一种能够在 JSON 对象中导航直到找到给定参数的方法。我的 JSON 的结构类似于文件夹系统。有文件夹,每个文件夹可以有 files.A 文件夹可以有另一个文件夹,所以 on.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"
  }
}
  ]
}

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

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

您可能还想考虑使用 Gson 库来简化解析。如果您能够将 Gson 添加到项目中(我建议您这样做),那么有大量关于解析数据和将 JSON 反序列化为普通 Java 对象的优秀教程(这将为您节省嵌套循环的头痛)。 Using GSON in Android to parse a complex JSON object and http://blog.nkdroidsolutions.com/how-to-parsing-json-array-using-gson-in-android-tutorial/ 是两个很好的资源。

(P.S。如果可能,您可能需要考虑简化 JSON 结构,因为使用它会容易得多。