[英]How do I parse this local JSON file?
"documenttypes": [{
"documentname": "DNC Format",
"mandatory": "0",
"limitnumber": "2",
"supportingfiles": {
"document": [{
"type": "DNC Format",
"displayname": "DNC_Format"
}]
}
},
{
"documentname": "Joint Life Addendum",
"mandatory": "0",
"limitnumber": "3",
"supportingfiles": {
"document": [{
"type": "Joint Life Addendum",
"displayname": "Joint_Life_Addendum"
}]
}
},
{
"documentname": "Age proof of Child",
"mandatory": "0",
"limitnumber": "3",
"supportingfiles": {
"document": [{
"type": "Age proof of Child",
"displayname": "Age_proof_of_Child"
}]
}
},
{
"documentname": "Permanent Address Proof of Proposer",
"mandatory": "0",
"limitnumber": "4",
"supportingfiles": {
"document": [{
"type": "AADHAR Card",
"displayname": "AADHAR_Card"
},
{
"type": "Aadhar Card letter",
"displayname": "Aadhar_Card_letter"
},
{
"type": "KMBL KYC ",
"displayname": "KMBL_KYC "
},
{
"type": "Driving License",
"displayname": "Driving_License"
}
]
}
}]
我正在將類型鍵獲取到 typeArray,但我需要獲取為 arrays 的數組:
if let personArray = jsonResult.value(forKey: "documenttypes") as? NSArray {
for (_, element) in personArray.enumerated() {
if let element = element as? NSDictionary {
let id = element.value(forKey: "documentname") as! String
self.documentnameArr.append(id)
let files = element.value(forKey: "supportingfiles") as! NSDictionary
if let personArray = files.value(forKey: "document") as? NSArray {
for (_, element) in personArray.enumerated() {
if let element = element as? NSDictionary {
if let myArr = element.value(forKey: "type"){
self.typeArr.append(myArr as! String)
}
}
}
}
}
}
我正在獲取typeArr
中的所有類型鍵值,但我需要像 arrays 數組這樣的值:
[["DNC FORMAT"],["Joint Life Addendum"],[兒童年齡證明],[AADHAR Card,Aadhar Card letter,KMBL KYC,Driving License]]
這是我的代碼:
var documentnameArr: [String] = []
var typeArr:[[String]] = []
if let personArray = jsonResult["documenttypes"] as NSArray? {
for (_, element) in personArray.enumerated() {
if let element = element as? NSDictionary {
let id = element.value(forKey: "documentname") as! String
documentnameArr.append(id)
let files = element.value(forKey: "supportingfiles") as! NSDictionary
if let personArray = files.value(forKey: "document") as? NSArray {
var arrayInDocument: [String] = []
for (_, element) in personArray.enumerated() {
if let element = element as? NSDictionary {
if let myArr = element.value(forKey: "type"){
arrayInDocument.append(myArr as! String)
}
}
}
typeArr.append(arrayInDocument)
}
}
}
}
print(documentnameArr)
print(typeArr)
如果您使用 swift Codable
,則 JSON 解析將更加直接。 您永遠不需要以這種方式遍歷 JSON 鍵,您只需根據需要將其解析為適當的結構和類。
例如,在您的情況下,您需要為您的 JSON 類型創建三個結構: documenttypes
、 supportingfiles
和document
。
如果您只需要對這些類型進行解碼,則只需符合Decodable
。
您可以在John Sundel提供的這篇文章中使用Codable
閱讀有關 pasign JSON 的更多信息
您可以使用 Cocoapods 中的“SwiftyJSON”pod,強烈推薦。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.