我正在尝试实现一个能够在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"
}
}
]
}
例如,我想编辑" Bild2"它有路径" / RootFolder / FolderInRoot / Bild2"。有人有一种导航到给定位置的方法。路径应该是参数。
答案 0 :(得分:2)
您需要遍历您的JSON响应,直到达到正确的深度,然后您可以使用getString(“name”)来获取该密钥的内容(即Bild2)。从对象/键获取内容后,您可以将其添加到列表或映射中以迭代或执行您想要的任何其他数据。有关详细信息,请参阅此StackOverflow问题:Java loop over Json array?
您也可以考虑使用Gson库来简化解析。如果你能够将Gson添加到项目中(我建议你这样做),有很多很棒的教程可以解析数据并将JSON反序列化为普通的Java对象(这将为你节省嵌套循环的麻烦)。 Using GSON in Android to parse a complex JSON object和http://blog.nkdroidsolutions.com/how-to-parsing-json-array-using-gson-in-android-tutorial/是两个很好的资源。
(P.S。如果可能的话,你可能会考虑简化你的JSON结构,因为它会更容易使用)。