如何从openFoodFacts JSON(Swift)解码

约翰·M

我对从JSON文件解码非常陌生。

我的问题是,我该如何解码才能找到它:("product_name_en": "Coca Cola"该文件还有很多东西,但节点还没有)

我的结构设置为:

struct ParseStructs : Decodable {

   var product_name_en : String

}

我的检索代码是:

var testCall = "https://world.openfoodfacts.org/api/v0/product/5449000000996.json"



func request(urlString : String ){

    if let url = URL(string: urlString){

        let session = URLSession(configuration: .default)

        let task = session.dataTask(with :url) { (data , response , error) in

            if(error != nil){
                print(error!)
            }

                if let safeData = data{

                    print(safeData)
                    self.parseFunc(inputData: safeData)
                }

        }
        task.resume()
    }

}


func parseFunc(inputData : Data){

    let decoder = JSONDecoder()


    do{
    let decode = try decoder.decode(ParseStructs.self, from: inputData)
        print(decode)
    }catch{
        print(error)
    }

}

我只是不断从终端行遇到这个可爱的问题:71733字节

keyNotFound(CodingKeys(stringValue:“ product_name_en”,intValue:nil),Swift.DecodingError.Context(codingPath:[],debugDescription:“没有与键CodingKeys相关联的值(stringValue:\” product_name_en \“,intValue:nil)(\ “ product_name_en \”)。“,underlyingError:nil))

我注意到许多这样的问题都因不喜欢而受到打击,但是任何帮助将不胜感激。

Xavier Lowmiller

您的结构采用以下JSON结构:

{
    "product_name_en": "Coca Cola"
}

实际上,您感兴趣的数据包装在另一个对象中:

{
    "product": {
        "product_name_en": "Coca Cola"
    }
}

通常,您可以通过定义另一个中间结构来解决此问题:

struct Product: Decodable {
    var product_name_en: String
}

struct ProductWrapper: Decodable {
    var product: Product
}

然后在您的parseFunc函数中对此进行解码

let decoded = try decoder.decode(ProductWrapper.self, from: inputData)
let product = decoded.product

还有其他方法可以解决此问题,请查看本指南的“使用对象包装键进行处理”部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Swift 中解码 JSON 数据

如何在Swift 4中实现JSON数据的多态解码?

如何在Swift中解码JSON对象的命名数组

如何使用Swift Decodable协议解码嵌套的JSON结构?

如何使用Swift 4.2解决JSON可解码的坏异常?

如何解码包含数组 Swift 4 的 JSON 文件?

如何使用Swift结构正确解码嵌套的JSON对象

Swift 4可解码协议中如何使用JSON字典类型解码属性

Swift [45]可解码协议中如何使用JSON字典类型解码属性

在 Swift 4 中,如何使用 Codable 解码 JSON 并在解码的对象之间创建引用?

如何使用json解码

如何快速解码 JSON

由于此 json 没有密钥,如何将此 .json 解码为 swift 模型?

如何使用 Swift 解码 HTML?

Swift-如何将平面json解码为嵌套结构?

Swift Decodable-如何解码已被base64编码的嵌套JSON

如何解码具有多个在Swift中未命名的列表的JSON

在 Swift 中:如何解码此 JSON(具有可变键)?

如何在Swift中使用Codable解码具有不同对象的JSON数组?

Swift Codable-如何编码和解码字符串化的JSON值?

如何在Swift中使用许多唯一键对嵌套JSON进行解码?

Swift:如何对笨拙但规则的 JSON 结构进行 DRY 可解码解析

如何在Swift 4中使用可编码的方式解码JSON?

如何在swift 4中手动解码json数据

如何制作一个结构来解码 Swift 中的 JSON 结构?

如何解码以下json?

如何解码以下JSON?

如何从MYSQL PHP解码JSON

如何解码 JSON 元素?