web-dev-qa-db-ja.com

Swift)のNSJSONSerialization.dataWithJSONObjectの後に読み取り可能なJSONを取得する方法

これに似たコードがいくつかあります(ここでは簡略化しています):

_let text = "abc" let iosVersion = UIDevice.currentDevice().systemVersion

let message = ["Text" : text, "IosVersion" : iosVersion]

if NSJSONSerialization.isValidJSONObject(message){

    let url = NSURL(string: "http://localhost:3000/api/someapi")

    var request = NSMutableURLRequest(URL: url!)
    var data = NSJSONSerialization.dataWithJSONObject(message, options: nil, error: nil)


    print(data)

    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.HTTPMethod = "POST"
    request.HTTPBody = data

    let task = session.dataTaskWithRequest(request, completionHandler: nil)

    task.resume()
}
_

これは問題なく機能しますが、JSONを読み取り可能な形式で表示して、サーバー側でAPIを診断するためにJSONをコピーしてfiddler/curlに貼り付けることができるようにしたいと思います。上記のprintln(data)行は、16進データを提供します。何か案は?

11
Neil Billingham

StringからDataを作成し、エラーを処理することをお勧めします

do {
  let data = try JSONSerialization.data(withJSONObject: message)
  let dataString = String(data: data, encoding: .utf8)!
  print(dataString)

  // do other stuff on success

} catch {
  print("JSON serialization failed: ", error)
}
24
vadian