swift 3 alamofire swiftyjson下标

时间:2017-05-12 17:34:59

标签: ios json swift3 alamofire swifty-json

我知道很多次问过这个问题,但是我尝试了一切,我不知道为什么我的代码不起作用,我的结果总是为零。 我整合了alomafire和swiftyjson这是我的代码:

  let urlString = "myurl"

            let params: Parameters = [
                "accessProvider": AccessProvider,
                "inputToken": AccessToken
            ]


            Alamofire.request(urlString, method: .post, parameters: params, encoding: URLEncoding.httpBody)
                .responseJSON { response in
                    if let responseObject = response.result.value {
                        print("JSON: \(responseObject)")

                        let json = JSON(responseObject)

                        let path: [JSONSubscriptType] = ["user","id"]
                        let name = json[path].string
                        print("AAAAA")
                        print(name)
                    }
            }

我可以阅读用户的第一部分,但第二部分的id始终为nil。 这是响应json:

{
  "responseCode": 0,
  "responseDescription": "OK",
  "user": "{"id":"MAIL",
        "nickname":"MYNAME",
        "level":"U",
        "status":"A",
        "sex":null,
        "ageGroup":null,
        "address":null,
        "latitude":null,
        "longitude":null,
        "creation_timestamp":"2017-05-10 18:40:21",
        "notification":"1",
        "last_login":"2017-05-11 18:32:07",
        "mobilePreference":null,
        "sport":null,
        "spot":null,
        "token":"LONGTOKENID"}"
}

我希望你能提前帮助我。

1 个答案:

答案 0 :(得分:0)

谢谢vadian, 我用你的指示解决了这个问题, 如果有人有同样的问题,你可以这样解决: //初始化第一个json:

let json = JSON(responseObject)

//将第二个Json提取为String

let path: [JSONSubscriptType] = ["user"]
let name = json[path].string

//从字符串

初始化第二个json
if let dataFromString = name?.data(using: .utf8, allowLossyConversion: false) 
let jsonuser = JSON(data: dataFromString)

//访问数据

谢谢大家, 祝你有美好的一天。