如何解析以下JSON结果
{
"AddedByName": "jhon",
"ApproveAction": 0,
"ApproveActionName": "",
"photos": null,
"Status": 0,
},
{
"AddedByName": "mike",
"ApproveAction": 0,
"ApproveActionName": "",
"photos": null,
"Status": 0,
},
{
"AddedByName": "someone",
"ApproveAction": 0,
"ApproveActionName": "",
"photos": [
{
"Id": 53,
"Serial": 1,
"Url": "0afe88a3-76e1-4bac-a392-173040936300.jpg"
}
],
"Status": 0,
}
我如何到达“照片”阵列?
我已经声明了字典的本地数组,以保存整个响应,如下所示
var myLocalArray = [[String:Any]]()
并像这样从JSON响应中填充
if let Json = response.result.value as? [String:Any] {
if let ActionData = Json["ActionData"] as? [[String:Any]] {
self. myLocalArray = ActionData
}
}
它有效
但是我无法到达“照片”数组,请帮忙
答案 0 :(得分:1)
我将为您提供明智的解决方案,而不是在每次尝试将Json转换为有用的数据模型并使其更易于操作时有用的解决方案。 利用可腐烂的力量。 该模型将帮助您捕获Json
struct User: Decodable {
var AddedByName: String
var ApproveAction: Int
var ApproveActionName: String
var photos: [Photo]?
var Status: Int
struct Photo: Decodable {
var Id: Int
var Serial: Int
var Url: String
}
}
现在只需一行即可让您的Json构建数据:
let responseData = try JSONDecoder().decode([User].self, from: jsonD)
答案 1 :(得分:0)
@swiftIos 为Decodable提供了答案,这绝对是处理这种情况的更好方法。
但是根据您当前的情况,您可以从photos
访问self.myLocalArray
:
if let jsonData = response.result.value as? [String: Any] {
if let actionData = jsonData["ActionData"] as? [[String:Any]] {
self.myLocalArray = actionData
}
}
现在您有了actionData
的数组,因此可以通过提取特定索引的actionData
作为self.myLocalArray[0]
来访问照片。总体而言:
let index = 0
if self.myLocalArray.count > index {
if let photoArrayIndex0 = self.myLocalArray[index]["photos"] as? [[String: Any]] {
print(photoArrayIndex0)
}
}