读取 JSON 结果作为字典数组
read JSON result as array of dictionary
如何解析以下 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,
}
如何到达 "photos" 数组?
我已经声明了本地字典数组来保存整个响应,如下所示
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
}
}
并且有效
但我无法连接到 "photos" 阵列,请帮忙
我会为您提供聪明的解决方案,在您尝试将您 Json 转换为有用的数据模型并使其更易于操作时非常有用。
使用 Decodable 的强大功能。
本模特帮你俘获你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)
@swiftIos 用 Decodable 提供了答案,这绝对是处理这种情况的更好方法。
但是你现在可以从 self.myLocalArray
:
访问 photos
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)
}
}
如何解析以下 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,
}
如何到达 "photos" 数组?
我已经声明了本地字典数组来保存整个响应,如下所示
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
}
}
并且有效
但我无法连接到 "photos" 阵列,请帮忙
我会为您提供聪明的解决方案,在您尝试将您 Json 转换为有用的数据模型并使其更易于操作时非常有用。 使用 Decodable 的强大功能。 本模特帮你俘获你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)
@swiftIos 用 Decodable 提供了答案,这绝对是处理这种情况的更好方法。
但是你现在可以从 self.myLocalArray
:
photos
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)
}
}