【问题标题】:How to use SwiftyJSON on nested JSON values如何在嵌套的 JSON 值上使用 SwiftyJSON
【发布时间】:2015-10-21 08:18:54
【问题描述】:

我正在调用一个 JSON API,其中包含我需要获取的多个嵌套值。我正在使用 SwiftyJSON 让事情变得更简洁。对于顶级值,一切似乎都运行良好,但在更深层次上,我得到了可怕的“展开可选值时为零”。

这是我使用 Alamofire 进行 API 调用的方式:

Alamofire.request(APIRequests.Router.Nearby(self.page)).responseJSON(){
        (_,_,json,_) in
        println(json)
        if (json != nil){
            var jsonObj = JSON(json!)

            if let userArray = jsonObj ["results"].array {

                for userDict in userArray {
                        var username: String! = userDict["username"].string
                        var firstName: String! = userDict["firstName"].string
                        var profileImage: String! = userDict["userImages"]["profile"]["filename"].string
                        var characterName: String! = userDict["characters"]["characterName"].string

                        var user = User(username: username, profileImage: profileImage, firstName: firstName, characterName: characterName)

                        self.users.append(user)
                    }
                }

这是 JSON 的示例:

{
  userInfo: {
     something: "abc",
     requestType: "GET"
  },
  results: [
    {
     username: "Jess",
     firstName: "Jessica",
     userImages: {
        profile: [
           {
            userImageID: "6",
            filename: "user-07.jpg"
           }
        ],
        cover: [
           {
            userImageID: "15",
            filename: "user-07.jpg"
           }
        ]
     },
     characters: [
         {
          userCharacterID: "8",
          characterName: "Amelia",
         }
     ]
}

对于顶级键 usernamefirstName,调试器显示正确的值,但是,只要我更深入地了解 profileImagecharacterName,即使这些值返回为 nil打印 json 会显示这些键的值。

我做错了什么?我只是没看到。

任何想法都会有所帮助。谢谢。

【问题讨论】:

    标签: arrays json nested alamofire swifty-json


    【解决方案1】:

    试试

    var profileImage: String! = userDict["userImages"]["profile"][0]["filename"].string
    
    var characterName: String! = userDict["characters"][0]["characterName"].string
    

    让我们知道它提供了什么。

    【讨论】:

    • 是的!谢谢你。我知道它必须像那样简单。
    • 你也应该可以使用下标速记:let characterName = json["characters",0,"characterName"].string
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多