浏览 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 结构,因为使用它会容易得多。
我正在尝试实现一种能够在 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 结构,因为使用它会容易得多。