Как преобразовать массив объектов в массив Json или строку Json в ios swift? - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть массив с набором объектов var quiz_anwers_list = [QuizQu]() "QuizQu" - это класс, который содержит 2 переменные

class QuizQu: Decodable {
    var ques_id: String?
    var their_answer: String?
}

Теперь у меня есть,

for i in 0...self.quiz_anwers_list.count-1{

            print(self.quiz_anwers_list[i].ques_id ?? "no val in ques id of \(i)")
            print(self.quiz_anwers_list[i].their_answer ?? "no val in their_ans of \(i)")
        }

Выводэти печать:

14
correct_answer
15
correct_answer2
16
correct_answer2
17
correct_answer

Теперь, как я могу преобразовать это в JsonArray или JSON String?Я новичок в iOS.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы можете сделать это с

    extension Encodable {
      var dictionary: [String: Any]? {
        guard let data = try? JSONEncoder().encode(self) else { return nil }
        return (try? JSONSerialization.jsonObject(with: data, options: .allowFragments)).flatMap { $0 as? [String: Any] }
      }
}

let struct = QuizQu(ques_id: 1, their_answer: abc)
let jsonObj = struct.dictionary
0 голосов
/ 25 сентября 2018

Ваш класс, вероятно, должен быть структурой и должен соответствовать Encodable, а не Decodable, если вы планируете кодировать и декодировать, вы можете использовать протокол Codable, который охватывает оба случая.

Один разВы сделали это, просто используйте JSONEncoder для преобразования его в данные JSON, а затем вы можете распечатать его, используя String(bytes: Sequence, encoding: String.Encoding)

struct QuizQu: Codable {
    var ques_id: String?
    var their_answer: String?
}

let questions = [
    QuizQu(ques_id: "1", their_answer: "2"),
    QuizQu(ques_id: "2", their_answer: "2"),
    QuizQu(ques_id: "3", their_answer: "1"),
    QuizQu(ques_id: "4", their_answer: "4"),
    QuizQu(ques_id: "5", their_answer: "3")
]

do {
    let encoded = try JSONEncoder().encode(questions)
    print(String(bytes: encoded, encoding: .utf8))
} catch {
    print(error)
}

Вывод:

Необязательно ("[{\ "ques_id \": \ "1 \", \ "their_answer \": \ "2 \"}, {\ "ques_id \": \ "2 \", \ "their_answer \": \ "2 \"}, {\ "ques_id \": \ "3 \", \ "their_answer \": \ "1 \"}, {\ "ques_id \": \ "4 \", \ "their_answer \": \ "4\ "}, {\" ques_id \ ": \" 5 \ ", \" its_answer \ ": \" 3 \ "}]")

Примечание: выходная строка экранирована, следовательнообратные слеши

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