簡體   English   中英

在Swift 3的Json響應中無法獲取鍵值對?

[英]Unable to get key value pair in Json response in swift 3?

我有如下所示的Json服務器響應數據,我使用模型類獲得了所有鍵值對,而無法僅獲得一個鍵值對street有人可以幫助我如何獲取街道鍵值對嗎?

這是我的傑森數據

{
  "address": {
    "city": "chennai",
    "firstname": "sommesh",
    "lastname": "s",
    "email": "test@gmail.com",
    "postcode": "43",
    "street": [
      "[No: 14; 8th cross street]"
    ],
    "country_id": "US",
    "region_code": "CA",
    "region_id": "12",
    "telephone": "8756467654",
    "sameAsBilling": 1,
    "region": "California",
    "prefix": "",
    "company": "Test Company"
  }
}

這是我的模型類代碼

struct GuestAddress {

        let id : Int
        let region : String
        let regionId : Any
        let regionCode : String
        let countryId : String
        let company : String
        let telephone : Any
        let postCode : Any
        let city : String
        let firstName : String
        let lastName : String
        let email : String
        let sameAsBilling : Any
        let saveInAddressBook : Any
        var street : [String]

        init(dict : [String:Any]) {
            self.id = dict["id"] as! Int
            self.region = dict["region"]! as! String
            self.regionId = dict["region_id"]!
            self.regionCode = dict["region_code"]! as! String
            self.countryId = dict["country_id"]! as! String
            self.company = dict["company"]! as! String
            self.telephone = dict["telephone"]! as! String
            self.postCode = dict["postcode"]!
            self.city = dict["city"]! as! String
            self.firstName = dict["firstname"]! as! String
            self.lastName = dict["lastname"]! as! String
            self.email = dict["email"]! as! String
            self.sameAsBilling = dict["same_as_billing"]!
            self.saveInAddressBook = dict["save_in_address_book"]!
            let guestStreet = dict["street"] as! [String]
            var streetArr = street
            for item in guestStreet  {
                streetArr.append(item)
            }
            street = streetArr
        }
      }

這是我的郵遞員數據圖像

首先初始化變量

var street:[String] = []

因為在這里,您已經聲明

var street:[String]

永遠不會初始化,寫完之后

var streetArr =街道

這意味着“ streetArr”也未初始化。 所以

streetArr.append(item)不執行任何操作。

您有多余的代碼工作。

如下更正:

 var street : [String] = []

init(dict : [String:Any]) {

     :
     :
     :
     :
     let guestStreet : [String] = dict["street"] as! [String] //2. here, guestStreet is the array of address.

 // 3. Print guestStreet
 //[ "[No: 14; 8th cross street]" ]

 // get required result

for item in guestStreet  {

    var address = item
    address.remove(at: address.startIndex)  //4. remove first brace
    address = String(address.characters.dropLast()) //5. remove last brace
    street.append(address) //6. Append address

}

print(street.first!) //7.  Output

而已。

輸出:

在此處輸入圖片說明

暫無
暫無

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

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