如何从OpenFoodFactsJSON(Swift)解码
我对从JSON文件解码相当陌生 我的问题是,我如何解码找到这个:如何从OpenFoodFactsJSON(Swift)解码,json,swift,jsondecoder,Json,Swift,Jsondecoder,我对从JSON文件解码相当陌生 我的问题是,我如何解码找到这个:“product\u name\u en”:“Coca-Cola”(该文件还有很多内容,但不是节点) 我的结构设置为: struct ParseStructs : Decodable { var product_name_en : String } 我的检索代码是: var testCall = "https://world.openfoodfacts.org/api/v0/product/5449000000996.j
“product\u name\u 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(编码键(stringValue:“产品名称”,intValue:无),
Swift.DecodingError.Context(编码路径:[],调试说明:“否
与键编码键关联的值(stringValue:\“product\u name\u en\”,
intValue:nil)(“产品名称””,underlineError:nil))
我注意到,这些问题中有很多都会受到不喜欢的影响,但如果有任何帮助,我将不胜感激。您的结构假设为以下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)
让product=decoded.product
还有其他方法可以解决此问题,请查看的“处理对象环绕键”部分