簡體   English   中英

如何解析這個本地 JSON 文件?

[英]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 類型創建三個結構: documenttypessupportingfilesdocument

如果您只需要對這些類型進行解碼,則只需符合Decodable

您可以在John Sundel提供的這篇文章中使用Codable閱讀有關 pasign JSON 的更多信息

您可以使用 Cocoapods 中的“SwiftyJSON”pod,強烈推薦。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM