您面临的问题是因为您
JSON返回的水果数据不同。
对于第一个ID,它返回一个
String叫
name,但在第二个它返回一个字符串叫
title。
另外,在解析JSON时,ID似乎是a
String而不是
Int。
因此,您可以从数据中获得两个可选值。
因此,“可分解结构”应如下所示:
struct Response: Decodable { let fruits: [Fruits]}struct Fruits: Decodable { let id: String let image: String let name: String? let title: String?}由于您的网址似乎无效,因此我在主捆绑包中创建了JSON文件,并能够像这样正确解析它:
/// Parses The JSonfunc parseJSON(){ if let path = Bundle.main.path(forResource: "fruits", ofType: "json") { do { let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe) let jsonResult = try JSonDeprer().depre(Response.self, from: data) let fruitsArray = jsonResult.fruits for fruit in fruitsArray{ print(""" ID = (fruit.id) Image = (fruit.image) """) if let validName = fruit.name{ print("Name = (validName)") } if let validTitle = fruit.title{ print("Title = (validTitle)") } } } catch {print(error) } }}希望能帮助到你…



