【问题标题】:Unable to get key value pair in Json response in swift 3?swift 3 中无法在 Json 响应中获取键值对?
【发布时间】:2018-04-13 10:52:00
【问题描述】:

我有如下所示的 Json 服务器响应数据,我使用模型类获取了所有键值对,但无法仅获取一个键值对街道有人可以帮助我如何获取街道键值对吗?

这是我的 Json 数据

{
  "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
        }
      }

Here is my postman data image

【问题讨论】:

  • 你能澄清你的要求吗?你说“只得到一个键值对街道”。但是什么是“键值对街”,你只想得到一个是什么意思?
  • 我的 Json 数据中的街道键值对我无法使用上面显示的代码获得@RayToal
  • 您只需检查我在上面发布的图片,那是我的邮递员图片@RayToal
  • street是一个json数组,不能当成字符串。
  • 那么所有其他的都有效吗?比如emaillastName等等?而你就是无法获得street

标签: ios json swift3


【解决方案1】:

先初始化变量

var street : [String] = [ ]

因为在这里,你已经声明了

变量街道:[字符串]

从不初始化, 写完之后就在那里

var streetArr = 街道

这意味着“streetArr”也没有初始化。所以

streetArr.append(项目) 什么都不做。

【讨论】:

  • 工作正常,但打印 ["[No: 14; 8th cross street]"] 像这样如何删除大括号并只在其中获取字符串
  • 那一定是你的回复,你可以通过使用字符串属性“stringByReplacingOccurrencesOfString”来删除它
【解决方案2】:

你有多余的代码工作。

更正如下:

 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

就是这样。

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2021-11-26
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多