Разбор JSON для моделирования в React Native становится неопределенным - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь сопоставить мой 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 и пытаюсь проанализировать мою модель, я получаю следующее ошибка

Ошибка типа: undefined - не объект не разбираю JSON Object в конструкторе new Product(), код работает нормально. Но я хотел бы организовать код. Поэтому я хотел бы реализовать класс Product.

1 Ответ

1 голос
/ 20 апреля 2020

Возможно, вы используете await не так, как вы ожидаете.

Строка await mostSoldProductsApiCall.json().Products фактически сначала возвращает обещание, а затем await в поле полученного обещания Products, которое не определено, потому что это не результат обещания.

что-то эквивалентное:

const promise = mostSoldProductsApiCall.json()    // this is the promise
const unresolvedProducts = promise.Products       // this is undefined
const mostSoldProductsApiResponse = await unresolvedProducts  // this resolves to undefined

Решение

Используйте скобки для await на фактическом обещании, например Итак:

const mostSoldProductsApiResponse = (await mostSoldProductsApiCall.json()).Products

Другой вариант:

const mostSoldProductsApiResponse = await mostSoldProductsApiCall.json()
const arrayProducts = mostSoldProductsApiResponse.Products.map(function(item) {
  return new Product(item.Product)
})

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...