Это ваш целевой формат:
{
"users": [{
"userid": 16,
"meetAt": "Some place (College/trip etc)",
"showFields": "11111111000"
}, {
"userid": 17,
"meetAt": "Some place (College/trip etc)",
"showFields": "11111111001"
}]
}
После вызова JSONSerialization
для него (или если ваш код принимает словарь / массив и выполняет сам перевод):
let jsonToRegistrer = [["userid":userDetails.id, "meetAt":"Defalut Test Location at", "showFields":userDetails.showFields]];
Должно представлять, что:
[{
"userid": 16,
"meetAt": "Defalut Test Location at",
"showFields": "11111111000"
}]
Вы видите проблему?Ваша версия - Array
, а целевая - Dictionary
, и вам так не хватает клавиши users
.
Чтобы исправить это:
let jsonToRegistrer = ["user": [["userid":userDetails.id, "meetAt":"Defalut Test Location at", "showFields":userDetails.showFields]]];
Вы также не можетенапишите это в одну строку, чтобы было понятнее:
let jsonToRegistrer = ["user": [
["userid": userDetails.id,
"meetAt": "Defalut Test Location at",
"showFields": userDetails.showFields]
]
];
Таким образом, проблема в том, что ваша версия не имела того же формата, что и необходимый.
Чтобы увидеть, какая ваша версия отображается вJSON вы можете использовать:
let jsonData = try? JSONSerialization.data(withJSONObject: jsonToRegistrer, options: .prettyPrinted)
let jsonString = String(data: jsonData!, encoding: .utf8) //Note it's a force unwrap but just to debug, avoid using force unwrap
print("jsonString: \(jsonString)")