Как отправить JSON со словарем и массивом в iOS(Цель c)?
Я пытаюсь отправить JSON в websocket. требуемый формат приходит с запятыми, тогда как когда я добавляю элемент в словарь, он создает точку с запятой.
Требуемый формат:
{"key":"driver_location_updates","driverID":40,"coordinates":[25.22632,55.2844576]}
Формат, который я создал:
"driver_location_updates" =
{
coordinates = ( "24.96046731716484","67.05977029173361");
driverID = 16;
key = "driver_location_updates";
};
}
3 ответа
Как вы сказали в комментариях
ключ не с кавычками.
После каждого значения стоит точка с запятой
Круглая скобка в координатах
Пояснение:
- Поскольку ваш ключ состоит из одного слова, предполагается, что он является строкой (так как есть символы, а не целые числа). Попробуйте сохранить ключ, как два слова, как
key mine
или жеkey_2
Потому что после каждого ключа в словаре стоит точка с запятой. (Синтаксис x-кода для словаря).
Потому что массив в консоли представлен в
(...)
где словарь будет представлен в{...}
,
Теперь, более того, если вы наблюдаете, есть =
в словаре но в json есть :
, Это просто потому, что нотация словаря массива отличается от json.
Рассматривая вышеизложенные пункты, вы понимаете, что оба они одинаковы.
Из формата, я думаю, вы использовали [NSString stringWithFormat:@"%@"]
или получил "JSON" от звонка -[NSDictionary description]
,
Это создает не JSON, а общую удобочитаемую нотацию структуры данных. Это похоже на JSON, и у меня была та же самая проблема много лет назад:)
использование NSJSONSerialization
чтобы получить настоящий JSON:
NSData *JSONData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 &error];
или напрямую писать в поток
[NSJSONSerialization writeJSONObject:dictionary toStream:writeStream options:0 error:&error]
Вы должны использовать JSONSerialization
конвертировать словарь в JSON, я думаю.
let dictionary: [String: Any] = ["key":"driver_location_updates", "driverID": 40, "coordinates": [25.22632,55.2844576]]
let jsonData = try? JSONSerialization.data(withJSONObject: dictionary, options: [])
let jsonString = String(data: jsonData!, encoding: .utf8)
print(jsonString)
Я надеюсь, что вы знаете, как преобразовать ответ в Objective C