在Swift中将编码字符串转换为JSON数组



我有一个编码字符串:

("[{"carMake"Mercedes","phone":"03001234567","insurancePolicyNo":"0123456","email":"a@g.com","full_name":"史蒂文Fin","registrationNo":"02134","insuranceProvider":"Michael","carModel":"Benz"},{"carMake"Audi"phone":"03007654321","insurancePolicyNo":"654321","email":"b@g.com","full_name":"弗莱明Smith","registrationNo":"4325","insuranceProvider":"Buttler","carModel":"A3"}]")

我想把它转换成JSON数组,像这样:

[
{
"full_name": "Steven Finn",
"insuranceProvider": "Michael",
"insurancePolicyNo": "0123456",
"registrationNo": "02134",
"carMake": "Mercedes",
"carModel": "Benz",
"email": "a@g.com",
"phone": "03001234567"
},
{
"full_name": "Flemming Smith",
"insuranceProvider": "Buttler",
"insurancePolicyNo": "654321",
"registrationNo": "4325",
"carMake": "Audi",
"carModel": "A3",
"email": "b@g.com",
"phone": "03007654321"
}
]

经过一番搜索后,我将其转换为Dictionary,结果是:

[["registrationNo"; 02134, "carModel"; Benz, "phone"; 03001234567, "email"; a@g.com, "insurancePolicyNo"; 0123456, "carMake"; Mercedes, "full_name"; Steven Finn], ["carModel"; Mercedes, "full_name"; Buttler, "carMake"; Audi, "insurancePolicyNo"; 654321, "full_name"; Flemming Smith, "registrationNo";4325,电话"; 03007654321; "电邮";: b@g.com]]

这不是期望的结果。

有人知道如何实现我想要的数组吗?

你所谓的Encoded String已经是json数据。尝试将其解码为Car模型:

struct Car: Codable {
let carMake, phone, insurancePolicyNo, email: String
let full_name, registrationNo, insuranceProvider, carModel: String
}
struct ContentView: View {
var body: some View {
Text("testing")
.onAppear {
let str = """
[{"carMake":"Mercedes","phone":"03001234567","insurancePolicyNo":"0123456","email":"a@g.com","full_name":"Steven Fin","registrationNo":"02134","insuranceProvider":"Michael","carModel":"Benz"}, {"carMake":"Audi","phone":"03007654321","insurancePolicyNo":"654321","email":"b@g.com","full_name":"Flemming Smith","registrationNo":"4325","insuranceProvider":"Buttler","carModel":"A3"}]
"""

do {
let data = str.data(using: .utf8)!
let response = try JSONDecoder().decode([Car].self, from: data)
print("n---> response (response)")
} catch {
print(" error (error)")
}

最新更新