简体   繁体   English

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

[英]Convert Encoded String To JSON Array in Swift

I have an Encoded String :我有一个编码字符串

("[{"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"}]") ("[{"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","re​​gistrationNo":"4325","insuranceProvider":"Buttler","carModel":"A3"}]")

I want to convert this into JSON array like this:我想将其转换为 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"
    }
  ]

After some searching, what I did was converting it to Dictionary, which results in:经过一番搜索,我所做的是将其转换为字典,结果是:

[["registrationNo": 02134, "carModel": Benz, "phone": 03001234567, "email": a@g.com, "insuranceProvider": Michael, "insurancePolicyNo": 0123456, "carMake": Mercedes, "full_name": Steven Finn], ["carModel": A3, "insuranceProvider": Buttler, "carMake": Audi, "insurancePolicyNo": 654321, "full_name": Flemming Smith, "registrationNo": 4325, "phone": 03007654321, "email": b@g.com]] [[“registrationNo”:02134,“carModel”:奔驰,“电话”:03001234567,“电子邮件”:a@g.com,“insuranceProvider”:迈克尔,“insurancePolicyNo”:0123456,“carMake”:梅赛德斯,“full_name ": Steven Finn], ["carModel": A3, "insuranceProvider": Buttler, "carMake": Audi, "insurancePolicyNo": 654321, "full_name": Flemming Smith, "registrationNo": 4325, "phone": 03007654321, “电子邮件”:b@g.com]]

Which is not the desired result.这不是预期的结果。

Did anyone knows how to achieve my desired array?有谁知道如何实现我想要的阵列?

your so called Encoded String is already json data.你所谓的Encoded String已经是 json 数据。 Try this to decode it into a Car model:试试这个把它解码成一个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)")
                }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM