RESTful APIを使用してリモートサーバーにリクエストしています。私は辞書を作成し、JSONSerializationを使ってDataにシリアル化します。問題は、日付時刻をdd/mm/yyyyにシリアル化するときに\文字を自動的に追加するときです。この問題は、辞書からデータまたはデータから文字列への変換が原因である可能性があります。私は正確にはわからない。この\文字の下にSwift 3 JSONSerializationシリアライズ辞書に文字が含まれています
を削除する方法
はアプリ上の私のコードです:
var dic = [String : String]()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy hh:mm:ss"
let current : String = dateFormatter.string(from: now)
dic["RequestAt"] = current
// others set key-value
do {
var request = URLRequest(url: URL(string: DOMAIN_NAME)!)
request.httpMethod = "POST"
request.timeoutInterval = 3
request.addValue("application/json charset=utf-8", forHTTPHeaderField: "Content-Type")
request.addValue("application/json charset=utf-8", forHTTPHeaderField: "Accept")
let d = try JSONSerialization.data(withJSONObject: dic, options: [])
let str = String.init(data: d, encoding: .utf8)
print(str ?? "NOTHING") // Same result as server's receive
request.httpBody = d
let session = URLSession.shared
session.dataTask(with: request) { data, response, err in
//handle callback
}.resume()
} catch let error {
print(error.localizedDescription)
}
しかし、サーバ側は、JSONの下に受け取る:
{
"RequestAt":"08\/04\/2017 11:42:03",
....
}
をご支援いただきありがとうございます。
あなたはバックスラッシュを懸念しているか、サーバがフォーマットを受け入れないのですか? JSONの仕様によれば、スラッシュはサーバ側の開発者 – vadian
に逃げられます。このシステムには既にAndroidで実行されているアプリがあるので、この手順を修正する必要があります。 – Robust
スラッシュをエスケープすると完全に有効になるので、サーバー側で修正する必要があります。 – vadian