[英]How to convert object array into Json array or Json string in ios swift?
我有一個數組,其中有一組對象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的新手。
您的類可能應該是一個結構,並且應該符合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 \\”,\\ “their_answer \\”:\\ “3 \\”}]“)
注意:輸出的String被轉義,因此反斜杠
你可以做到
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.