[英]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.