我試圖與下面的詞典將其轉化爲JSON字典以JSON正在迅速3
let store = [
"newTask" : [
"project_name": "iOS",
"total_time":0,
"color":"blue"
]
]
我連載這個使用下面的代碼,然後產生一個HTTP POST請求兩次連載使用下列選項-POST要求:
let jsonData = try? JSONSerialization.data(withJSONObject: store)
var request = URLRequest(url: URL(string: "http://localhost:3000/store")!)
request.httpMethod = "POST"
request.httpBody = jsonData
我也運行一個JSON服務器https://github.com/typicode/json-server具有以下db.json文件
{
"store": [
{
"id": 0,
"ios": {
"project_name": "iOS",
"total_time": 0,
"color": "blue"
}
},
{
"id": 1,
"elm": {
"project_name": "elm",
"total_time": 0,
"color": "blue"
}
}
]
}
我遇到的問題是,在數據庫中最新添加的項目看起來不正確,格式如下:
{
"{\"newTask\":{\"project_name\":\"iOS\",\"total_time\":0,\"color\":\"blue\"}}": "",
"id": 10
},
我不清楚,爲什麼它是連載整個字典的鍵,然後空字符串作爲值。
更新
下面是這個職位的服務器代碼:
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print("error=\(error)")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
do {
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
print(json)
}
} catch let error {
print(error.localizedDescription)
}
}
task.resume()
作爲一個方面說明,我試圖通過郵遞員束縛這一點,這一切工作OK。附上下面的截圖。
任何幫助將不勝感激,謝謝!
@EricAya感謝您的聯繫,以便迅速獲得!我已經更新了上述職位有更新發布的HTTP請求,以及解釋說,在郵遞員同一請求工作正常。 –
@EricAya使鍵名稱是完全一樣的,我改變了它。它似乎對郵差工作正常。問題很可能與HTTP請求或正在發生的序列化有關。 –