Java 通过JSONObject Android导航
我正在尝试实现一种方法,该方法能够在JSONObject中导航,直到找到给定的参数。我的JSON结构类似于foldersystem。有文件夹,每个文件夹都可以有文件。一个文件夹可以有另一个文件夹,依此类推。JSON的外观如下: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
{
"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。和