Невозможно декодировать json строку из объекта Dictionary в том же порядке и последовательности в Swift iOS - PullRequest
0 голосов
/ 25 марта 2020

Я создал словарь с некоторыми значениями. Я хочу создать JSON строку этого объекта словаря.

Я использую String (данные: данные, кодировка: .utf8)! , чтобы создать json строку, но каждый раз, когда я запустить этот код я получаю json строку в другой последовательности и порядке тех же данных.

import Foundation
import CommonCrypto

var object = ["emp1":["name":"neeraj","age":"14","degree":"Btech"],
          "emp2":["name":"ajay","age":"24","degree":"Mca"],
"emp3":["name":"vijay","age":"34","degree":"Bca"],
"emp4":["name":"raju","age":"44","degree":"Mtech"]]


if let data = try? JSONSerialization.data(withJSONObject: object, options: []){
print(String(data: data, encoding: .utf8)!)
}

Результат в первый раз:

{"emp2": { "возраст": "24", "степень": "МКА", "имя": "Аджай"}, "emp4": { "возраст": "44", "имя": "Раджу", "степень": "Mtech"}, "emp3": { "степень": "Bca", "имя": "Виджей", "возраст": "34"}, "emp1": { "степень": "Btech", "имя ":" neeraj "," age ":" 14 "}}

Результат второго раза:

{" emp1 ": {" age ":" 14 " , "степень": "Btech", "имя": "Neeraj"}, "emp4": { "имя": "Раджу", "степень": "Mtech", "возраст": "44"}, "emp3 ": {" имя ":" Виджай " "возраст": "34", "степень": "Вса"}, "етр2": { "имя": "Аджай", "возраст": "24"," степень ":" Mca "}}

Мне нужен один и тот же результат каждый раз.

Мне нужен один и тот же порядок для создания контрольной суммы md5 для сравнения с полученной контрольной суммой данных.

Я получаю ответ от веб-службы, например,

* 102 5 *

мне нужно создать md5 ha sh на моей стороне и мне нужно подтвердить с ha sh я получил.

но когда я создаю JSON String, я получил другой порядок и мой га sh не совпадает с полученным га sh.

Пожалуйста, помогите

1 Ответ

0 голосов
/ 26 марта 2020
  1. Не используйте MD5, он сломан.

  2. Создайте свой словарь из анализа JSON и затем создайте из него объекты ДИКТ.

  3. Ха sh объекты с разумным дайджестом, такие как Keccak, SHA-2, SHA-3 или Blake2.

...