【发布时间】:2017-04-08 17:01:51
【问题描述】:
我正在使用 RESTful API 向远程服务器发出请求。我创建了一个字典,然后使用 JSONSerialization 将其序列化为 Data。问题是当序列化日期时间 dd/mm/yyyy 时,它会自动添加一个 \ 字符。此问题可能是由于从 Dictionary 到 Data 或 Data 到 String 的转换。我不确切知道。
如何删除这个 \ 字符
以下是我在应用程序上的代码:
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 规范,斜杠可以转义
-
服务器端的开发者反馈我这个问题。这个系统已经有一个在安卓上运行的应用,所以我必须更正这一步。
-
转义正斜杠完全有效,因此应在服务器端进行更正。
标签: ios json serialization swift3 httprequest