Вы берете словарь, кодируя его в строку JSON. Этот процесс работает отлично. Если вы посмотрите на regjson
, вы увидите, что это нормально. Убедитесь сами:
let registers = [
["fullName" :"ali","mid" :"406070","phoneNumber":"0912033"]
]
let registersJsonData = try! JSONEncoder().encode(registers)
let registersJsonString = String(data: registersJsonData, encoding: .utf8)!
print(registersJsonString) // Looks just fine.
// => [{"mid":"406070","fullName":"ali","phoneNumber":"0912033"}]
Но затем вы берете эту строку json, помещаете в нее другой словарь и повторно сериализуете все это в еще одну строку json. Система не знает, что строковое значение для ключа "registers"
уже является JSON -сериализованной строкой. Он думает, что это обычная строка, не отличающаяся от "Mary had a little lamb."
. Он сериализовал эту строку, как и любую другую строку. Это включает в себя экранирование символов, которые имеют другое значение в синтаксисе JSON.
Система работает правильно, вы просто просите ее сделать то, что вам не нужно.
Что вы, вероятно, ищете:
let registers = [
["fullName": "ali", "mid" :"406070", "phoneNumber": "0912033"]
]
let parameters = [
"registers": registers
]
let parametersJsonData = try! JSONEncoder().encode(parameters)
let parametersJsonString = String(data: parametersJsonData, encoding: .utf8)!
print(parametersJsonString)
// => {"registers":[{"phoneNumber":"0912033","mid":"406070","fullName":"ali"}]}