Есть ли способ закодировать словарь в форму JSON с помощью JSONEncoder - PullRequest
0 голосов
/ 04 апреля 2019

Здесь словарь

struct Person : Codable {
    let name : String?
    let city : String?
    let age : Int?
}

let dic : [String : Any] = 
    ["name":"Manna","city" : "Rangpur", "age": 18,
     "name":"Munna","city" :"Dhaka","age":19,
     "name":"Shaon","city" :"Rangpur","age":11,
     "name":"Limon","city" :"Tangail","age":15,
     "name":"Lalon","city" :"Rangpur","age":18,
     "name":"Rakib","city" :"Dhaka","age":15, 
     "name":"Mum","city" :"Rangpur","age":18,
     "name":"Man","city" :"Bogura","age":12,
     "name":"Limon","city" :"Tangail","age":18]


// let manna = Person(name: "Manna", city: "Rangpur", age: 18)
// Here i want to use the dictionary

    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted

    do {
         let data  = try encoder.encode(manna)
         print(String(data: data, encoding: .utf8)!)
    } catch {
        print("error : \(error.localizedDescription)")
    }

пытается закодировать этот словарь так же, как файл json в качестве вывода, используя JSONEncoder

1 Ответ

0 голосов
/ 04 апреля 2019

Прежде всего, ваш словарь неверен, потому что словарь не содержит тот же ключ.

Вы можете представить его как массив словаря

let dic : [[String : Any]] = [["name":"Manna", "city" : "Rangpur", "age": 18],
                            ["name":"Munna","city" :"Dhaka","age":19,],
                            ["name":"Shaon","city" :"Rangpur","age":11,],
                            ["name":"Limon","city" :"Tangail","age":15,],
                            ["name":"Lalon","city" :"Rangpur","age":18,],
                            ["name":"Rakib","city" :"Dhaka","age":15,],
                            ["name":"Mum","city" :"Rangpur","age":18,],
                            ["name":"Man","city" :"Bogura","age":12,],
                            ["name":"Limon","city" :"Tangail","age":18]]

Теперь вы можете преобразовать этот массив словаря в JSON, как показано ниже

if let data = try? JSONSerialization.data(withJSONObject: dic, options: JSONSerialization.WritingOptions.prettyPrinted) {
    print(data.count)
    let json = String(data: data, encoding: String.Encoding.utf8)
    print(json ?? "")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...