Swift 3 alamofire swiftyjson 下标

Posted

技术标签:

【中文标题】Swift 3 alamofire swiftyjson 下标【英文标题】:Swift 3 alamofire swiftyjson subscript 【发布时间】:2017-05-12 17:34:58 【问题描述】:

我不知道为什么我的代码不起作用,我的结果总是为零。 我集成了 alamofire 和 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 的第二部分始终为零。 这是响应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""

【问题讨论】:

user 的值似乎是另一个 JSON 字符串。你负责服务器端吗?如果是,请考虑发送字典。 我不是服务器端的负责人,我该如何避免这个问题? 您需要将字符串(使用 SwiftyJSON)反序列化为字典。 能给我一点代码吗?我是ios新手,打扰了。 对不起,我不使用 SwiftyJSON,但很可能有一个 init 方法采用文字字符串。 【参考方案1】:

谢谢你, 我用你的指示解决了这个问题, 如果有人有同样的问题,你可以这样解决: //初始化第一个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)

//获取数据

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

【讨论】:

以上是关于Swift 3 alamofire swiftyjson 下标的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 的 ObjectMapper 和 Alamofire 问题 Alamofire 4 的 Alamofire 版本

Alamofire 在 Swift 3、Xcode 8 中出现错误

Alamofire - 从 Swift 2 转换为 Swift 3 时出错

POST 请求 Swift 3.0 Alamofire

Swift 3 Alamofire 请求进度

使用 Swift 3 和 Alamofire 4 后没有得到响应