Конвертировать KeyValuePairsв JSON - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь преобразовать KeyValuePairs<String:String> в JSON, вот что я пробовал до сих пор, и он не работает как KeyValuePairs.

var userKeyValuePair: KeyValuePairs<String, String> {
    return ["FirstName": "NSDumb",
            "Address": "some address value",
            "Age": "30"]
}

Я использую KeyValuePairs, так как мне нужен порядокключ-значение в последовательности, а не неупорядоченный, поэтому я попытался преобразовать приведенное выше в JSON, используя следующий код

let serializedData = try! JSONSerialization.data(withJSONObject: userKeyValuePair, options: [])
        let encodedData = String(data: serializedData, encoding: String.Encoding.utf8)

Но вышеприведенный код выдает ошибку времени выполнения и жалуется на недопустимое значение JSON.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (__SwiftValue)'

Если я использую приведенный выше словарь для сериализации JSONObject, он работает нормально, но не с KeyValuePairs, я сначала подумал, может быть, мне следует создать свой собственный тип, реализующий протокол Sequence, но перед тем, как идти по этому маршруту, я хотелчтобы узнать, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 22 июня 2019

Я попытался обернуть голову вокруг него, но не смог найти способ преобразовать KeyValuePairs<String, String> в словарь, поэтому я использовал словарь и изменил свой код, чтобы добиться того, что я пытаюсь сделать.

Если ваше требование требует, чтобы вы имели упорядоченный словарь, тогда я наткнулся на хорошую библиотеку, которую вы можете посмотреть на , но в конце я использовал словарь, чтобы получить мою работуготово.

Когда я думаю об этом, не будет ни одного случая, когда вам понадобится упорядочить словарь, потому что вся идея словаря состоит в том, чтобы просто хранить хешируемый набор пар ключ-значение, поэтому вВ конце концов я изменил свою логику, чтобы обойти ситуацию и достиг желаемого результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...