Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过JSONObject Android导航_Java_Android_Json_Jsonobject - Fatal编程技术网

Java 通过JSONObject Android导航

Java 通过JSONObject Android导航,java,android,json,jsonobject,Java,Android,Json,Jsonobject,我正在尝试实现一种方法,该方法能够在JSONObject中导航,直到找到给定的参数。我的JSON结构类似于foldersystem。有文件夹,每个文件夹都可以有文件。一个文件夹可以有另一个文件夹,依此类推。JSON的外观如下: { "Elements": [ { "file": { "files": [ { "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", "modified": 145760

我正在尝试实现一种方法,该方法能够在JSONObject中导航,直到找到给定的参数。我的JSON结构类似于foldersystem。有文件夹,每个文件夹都可以有文件。一个文件夹可以有另一个文件夹,依此类推。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”。有人有一种导航到给定位置的方法。路径应该是参数。

您需要在JSON响应中循环,直到到达正确的深度,然后可以使用getString(“名称”)获取该键的内容(即Bild2)。从对象/键获取内容后,可以将其添加到列表或映射中,以对数据进行迭代或执行任何其他操作。有关更多信息,请参阅此StackOverflow问题:

您可能还想考虑使用GSON库来简化解析。如果您能够将Gson添加到项目中(我建议您这样做),那么有大量优秀的教程可用于解析数据和将JSON反序列化为普通Java对象(这将为您省去嵌套循环的麻烦)。这是两个很好的资源


(P.S.如果可能的话,您可能需要考虑简化JSON结构,因为它将更容易使用)。

您需要循环通过JSON响应,直到您到达正确的深度,然后您可以使用GETSHIPE(“名称”)来获得该键(即BILD2)的内容。从对象/键获取内容后,可以将其添加到列表或映射中,以对数据进行迭代或执行任何其他操作。有关更多信息,请参阅此StackOverflow问题:

您可能还想考虑使用GSON库来简化解析。如果您能够将Gson添加到项目中(我建议您这样做),那么有大量优秀的教程可用于解析数据和将JSON反序列化为普通Java对象(这将为您省去嵌套循环的麻烦)。这是两个很好的资源


(P.S.如果可能的话,你可能想考虑简化JSON结构,因为它会容易得多)。

你能给我一个提示如何使我的JSON变平吗?当我说扁平化时,我的意思是简化结构——尽可能多地丢弃JSON层,即使这意味着复制一些数据。如果不能,那么就尽力使Java解析代码尽可能可读。正如我在回答中所说的,如果您能够添加依赖项,请使用Gson的JsonObject/JsonArray而不是普通Java的JsonObject/JsonArray。你能给我一个提示,怎么把我的Json弄平吗?!当我说扁平化时,我的意思是简化结构——尽可能多地丢弃JSON层,即使这意味着复制一些数据。如果不能,那么就尽力使Java解析代码尽可能可读。正如我在回答中所说的,如果您能够添加依赖项,请使用Gson的JsonObject/JsonArray而不是普通Java的JsonObject/JsonArray。和