React native 将JSON解析为React Native中的模型未定义

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并尝试解析到我的模型时,

我试图将我的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(函数(项){返回新产品(项)})