【问题标题】:How can I print the json content of the response from post request in Alamofire in swift?如何快速打印来自 Alamofire 中发布请求的响应的 json 内容?
【发布时间】:2016-06-27 21:15:42
【问题描述】:

好的,所以我正在使用 alamofire 并且我传递的参数是有效的。到目前为止的代码如下:

Alamofire.request(.POST, "http://mywebservice.com", parameters: myparameters)
.response { (request, response, data, error) in
    if(error != nil){
        print("error= \(error)")
    }else{
        print("there was no error so far ")
        print(data)
        var json = JSON(data!)

        print(json) //prints unknown
        print(json["id"]) //prints null      
        }
    }
}

我尝试了不同的方法,但到目前为止没有任何效果。我用的是alamofire和swiftyjson,来自webservice的响应json是:

{
  "id": "432532gdsg",
  "username": "gsdgsdg"
}

如果成功,我想分别打印这两个值。我该怎么做?

【问题讨论】:

  • 让我们试试这个:stackoverflow.com/a/33720060/2227743(这是关于 JSON() 的初始化,如果我猜对了,可能会对你有所帮助)
  • 是的,就是这样,谢谢!我可以删除这个问题,或者 - 当你将它作为答案发布时 - 我会接受它并且问题会自行关闭,你的电话,谢谢:)
  • 不客气!这两个问题是不同的,所以我也为这个做了一个具体的答案。谢谢。

标签: ios swift alamofire swifty-json


【解决方案1】:

您的问题来自这一行:

var json = JSON(data!)

来自 SwiftyJSON 的 JSON() 初始化器可以接受多种类型的输入。

当您没有在 init 中指定类型时,SwiftyJSON 会尝试自行推断类型。

不幸的是,它有时会默默地失败,因为它会误解输入。

所以,当使用带有 NSData 的 SwiftyJSON 时,解决方案是为 JSON 初始化器指定“data:”参数:

var json = JSON(data: data!)

【讨论】:

    【解决方案2】:

    试试这个

    Alamofire.request(.POST, "http://mywebservice.com", parameters : myparameters , encoding : .JSON )
        .responseData{ response in
                let json = JSON(data.response.result.value!)
                print(json)
                let id=json["id"]
                let username=json["username"]
                print(id)
                print(username)          
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 2016-12-25
      相关资源
      最近更新 更多