1
转换对象的数组JsonArray我有我的DataModel因为这样,它有一个函数名的toJSON将此对象转换成JSON字符串表示在Swift3
ContactEntry: NSObject {
var name: String!
var phone: String?
var email: String?
func toJson() -> String {
var dict : [String: AnyObject] = [:]
dict["name"] = (self.name ?? "") as AnyObject
dict["phone"] = (self.phone ?? "") as AnyObject
dict["email"] = (self.email ?? "") as AnyObject
guard let data = try? JSONSerialization.data(withJSONObject: dict, options: []) else{
return "{}"
}
guard let jsonString = String(data: data, encoding: String.Encoding.utf8) else {
return "{}"
}
return jsonString
}
}
它工作得很好,直到如今的我为此对象获取正确的JSON表示。
现在我必须将一个ContactEntry数组转换为JsonArray。
我这样做,但我在结果字符串中得到很奇怪的符号。 假设
var contacts = [ContactEntry]()
var contactsStr = [String]()
...
for contact in contacts{
contactsStr.append(contact.toJson())
}
do{
let data = try? JSONSerialization.data(withJSONObject: contactsStr, options: [])
let jsonString = try? String(data: data!, encoding: String.Encoding.utf8)
print(jsonString)
}
我得到的输出喜欢这个
[\n \"{\\\"phone\\\":\\\"+XXXX\\\",\\\"name\\\":\\\"YYYY\\\",\\\"email\\\":\\\"\\\"},\",\n \".........\n]
请帮我做一个更好的和干净的方式
感谢您的帮助
你能分享'contactsStr'的打印吗? – Frankie
忘记'prettyPrinted',导致大部分*怪异*输出 – vadian
@Frankie 这就是contactStr看起来如何 [“{\”phone \“:\”+ xxx \“,\”name \“:\”yyy \“,”email“:\”\“}”,“{\”phone \“:\”+ xxx \“,\”name \“:\”yy \“,\”email \ “\”}“,”{\“phone \”:\“xxx \”,\“name \”:\“yyy \”,\“email \”:\“\”}“,”{\“phone \“:\”+ yyy \“,\”name \“:\”xxxx \“,\”email \“:\”\“}”,“{\”phone \“... – user2873720