#json #swift #dictionary
#json #swift #словарь
Вопрос:
Я пытаюсь создать запрос параметра со словарем значений нескольких ключей, и он отлично работает. Но каждый раз словарь создается в случайном порядке ключ — значение. Как сортировать или упорядочивать по ключам словаря. Пример :
[
"mbappdetails": [
"locationdtls": [
"ipAdress": "100.105.100.6",
"locationDtl": "NaviMumbai,Maharashtra",
"longdtl": "73.0152077",
"latdtl": "19.1112212"
],
"appdtls": [
"appregflg": "00",
"appid": "com.mmcompany.nstapp",
"applversion": "1.0.70",
"pushnkey": "cVCzsSyxCLr4l5JPElHWLDiNuoQJcbFmRlN5LFWZM9hN5lYYZnJy_4Kvvu2_fAjBXhGxbKpt"
],
"devicedtls": [
"deviceserial": "ExtEYNBSO8D85KR7DCEIOSHH",
"devicemodel": "iPod Touch 6",
"os": "iOS",
"simflag": "N",
"devicesdkversion": "12.10",
"deviceproduct": "iPod Touch 6",
"deviceid": "XXXXX-A2F5-XXXX-8EAC-XXXXX",
"devicemake": "iPod touch",
"rootflg": "N",
"devicebrand": "APPLE",
"osVersion": "12.1.4"
],
"channelid": "XXXXXXRRRRRR"
],
"token": "myToken",
"signcs": "encrypted_dictionary_key_values_with_signature_key"
]
Порядок должен быть: channelid, appdtls, devicedtls, locationdtls, token, signcs
Вывод должен быть ТОЛЬКО в словаре.
Комментарии:
1. Почему вы хотите его отсортировать?
2. Словари Swift не сортируются. Почему порядок имеет значение?
3. @RakeshaShastri Привет, я пытаюсь отсортировать словарь по именам ключей. Например [«Имя»: «Рахул»,»Возраст»: «26», «Местоположение»: «Мумбаи», «AppName»: «nsdApp»]
4. Вопрос в том, почему? вы хотите, чтобы он был отсортирован. Не как? :’D.
5. Во-первых, это недостаток в коде сервера. Во-вторых, вы неправильно понимаете представление JSON и словарь Swift. Это не должно иметь значения в вашей собственной части, это просто когда вы преобразуете свой словарь или свою структуру обратно в JSON.
Ответ №1:
К сожалению, структура данных словаря не была предназначена для какого-либо отсортированного хранилища. Однако вы можете отсортировать ключи и получить их в виде массива.
let dictionary = [
"A" : [1],
"Z" : [3],
"C" : [2]
]
let keysSorted = Array(dictionary.keys).sorted(<)
Затем вы можете выполнить итерацию по отсортированному массиву и искать значения словаря по ключам. Надеюсь, это поможет!
Комментарии:
1. Как я уже говорил ранее, структура данных словаря не сохраняет порядок, в котором вставляются элементы, и не поддерживает какой-либо конкретный порядок. Однако, если вам нужно отправить значения на сервер в указанном порядке, я предлагаю написать собственную логику для перевода неупорядоченных значений словаря в упорядоченные значения JSON.
Ответ №2:
Вы не добавили никакого кода, поэтому можете попробовать следующее: (Вы можете изменить знак в соответствии с вашими требованиями. в каком порядке отправки или убывания вы хотите)
let sortedDict = YourDictionary.sorted(by: {$0.0 > $1.0})
и если вы пытаетесь вызвать API, тогда не имеет значения, в каком порядке находятся параметры.
Комментарии:
1.
let sortedDict = dict.sorted {$0.key > $1.key}
2. Что вы подразумеваете под словарем вывода? Словарь представляет собой неупорядоченную коллекцию
3. @LeoDabus Один парень ответил на мой вопрос и его в массиве. Да, я знаю, и мне нужна помощь.
4. @user10959828 теперь ваша строка не является допустимым json
5. @LeoDabus Не JSON, братан, это словарь 🙂
Ответ №3:
Попробуйте следующий код.
var dict = ["name" : "Test", "user" : "Users" ]
dict = [String : String](uniqueKeysWithValues: dict.sorted{ $0.key < $1.key
})
Комментарии:
1. Я хочу, чтобы, если ключ = «пользователь» —- Его порядок должен быть 1-м, если ключ = «имя» — 2-й, как этот порядок с условием.