これに似たコードがいくつかあります(ここでは簡略化しています):
_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進データを提供します。何か案は?
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)
}