React native 将JSON解析为React Native中的模型未定义
我试图将我的JSON对象映射到这样的模型类:React native 将JSON解析为React Native中的模型未定义,react-native,React Native,我试图将我的JSON对象映射到这样的模型类: export class Product { constructor(props) { this.name = props.Name this.items = props.Items this.price = props.Price this.productID = props.ProductID this.medias = props.Medias } } 但是当我得到JSON并尝试解析到我的模型时,
export class Product {
constructor(props) {
this.name = props.Name
this.items = props.Items
this.price = props.Price
this.productID = props.ProductID
this.medias = props.Medias
}
}
但是当我得到JSON并尝试解析到我的模型时,我得到了以下错误
TypeError:undefined不是对象(正在计算“mostSoldProductsApireResponse.map”
这是我的解析代码:
const mostSoldProductsApiResponse = await mostSoldProductsApiCall.json().Products;
const arrayProducts = mostSoldProductsApiResponse.map(function(item) {
return new Product(item.Product)
})
如果我不将JSON对象解析为
new Product()
构造函数,代码工作正常。但我希望组织代码。因此,我希望实现产品类。可能是您使用的是wait
而不是您所期望的
行wait mostSoldProductsApiCall.json().Products
实际上首先返回承诺,然后在结果承诺字段Products
上执行wait
操作,该字段未定义,因为它不是承诺的结果
相当于:
const promise = mostSoldProductsApiCall.json() // this is the promise
const unresolvedProducts = promise.Products // this is undefined
const mostSoldProductsApiResponse = await unresolvedProducts // this resolves to undefined
解决方案
使用括号等待实际承诺,如下所示:
const mostSoldProductsApiResponse = (await mostSoldProductsApiCall.json()).Products
另一种选择:
const mostSoldProductsApiResponse = await mostSoldProductsApiCall.json()
const arrayProducts = mostSoldProductsApiResponse.Products.map(function(item) {
return new Product(item.Product)
})
希望这有帮助!我改为
const-mostsoldProductsApireResponse=wait-mostSoldProductsApiCall.json();const-arrayProducts=mostsoldProductsApireResponse.map(函数(项){return new Product(项.Product)})
但我得到了[TypeError:mostsoldProductsApireResponse.map不是函数。(在“mostsoldProductsApireResponse.map(函数(项){return new(Product.default(item.Product);})”中,“mostsoldProductsApireResponse.map”未定义)]行:113796,列:64,
您遗漏了“产品”。请仔细查看第二个选项。请尝试:mostsoldProductsApireResponse.Products.MapThank!它更改了代码,在异步请求后将json传递给产品构造函数,并且成功了:DI确实错过了产品…非常感谢。我的代码现在看起来像:const mostSoldProductsApiCall=wait fetch(获取最畅销的产品\u URL\u WEB\u API,dataRequest);const mostSoldProductsApiResponse=wait mostSoldProductsApiCall.json();const arrayProducts=mostSoldProductsApiResponse.Products.map(函数(项){返回新产品(项)})