如何使用 nuxtjs 和 v-for 访问嵌套的 json 对象 属性

how to access nested json object property using nuxtjs and v-for

我想在 nuxtjs 中使用 v-for 访问 嵌套对象,我有一个使用 Axios 的获取请求 API 并且响应数据存储在名为 CategoriesData 的变量中,请看下面的代码。

asyncData(context) {
return axios
  .get("https://lavazemesakhteman.com/wp-json/wc/v3/products/categories", {
    params: {
      per_page: 10,
      page: 1,
    },
  })
  .then((res) => {
    return {
      CategoriesData: res.data,
    };
  })
  .catch((e) => context.error(e));}

至此,一切正常,所有 API 响应都存储在 CategoriesData 中,当我想遍历嵌套对象并显示或使用其 属性 时,我的问题就开始了,注意到下面的代码:

 <ul>
  <li v-for="categories in CategoriesData" :key="categories.id">
    {{ categories.name }}
    {{ categories.image }}
  </li>
</ul>

结果是:

我想显示和使用 categories.image[0].src 例如 src 而不是整个对象,API 响应如下图所示:

这是 JSON 代码的一部分:

     "display": "default",
    "image": {
        "id": 10443,
        "date_created": "2022-04-30T05:45:44",
        "date_created_gmt": "2022-04-30T01:15:44",
        "date_modified": "2022-04-30T05:46:36",
        "date_modified_gmt": "2022-04-30T01:16:36",
        "src": "https://lavazemesakhteman.com/wp-content/uploads/2022/04/Benkan-Connections2.jpg",
        "name": "Benkan Connections",
        "alt": "فروشگاه لوازم ساختمان عرضه کننده محصولاتی باکیفیت و همچنین با بهترین قیمت در تمام کشور هست."
    },

什么时候使用categories.image.src:

   <ul>
  <li v-for="categories in CategoriesData" :key="categories.id">
    {{ categories.name }}
    {{ categories.image.src }}
  </li>
</ul>

我得到以下 错误:

Cannot read properties of null (reading 'src')

您可以使用与获取第一个字段相同的 . 表示法来访问嵌套数据,因此您需要编写类似 {{ categories.image.src }}.

的内容
<template>
  <ul>
    <li v-for="category in CategoriesData" :key="category.id">
      {{ category.name }}
      <img :src="category.image.src">
    </li>
  </ul>
</template>

Note: You named the variable in your v-for as a plural, while the data it holds is singular. As each item in the list of categories is an individual category.

前往 API 本身,位于此处:http://lavazemesakhteman.com/wp-json/wc/v3/products/categories

表明有时您的图像可能 null,因此检查此异常是一件好事

<img v-if="category.image" :src="category.image.src">

根据您的项目及其设置方式,您甚至可以像这样使用 Optional Chaining

<img :src="category.image?.src">

不然这种更丑的形式也可以

<img :src="category.image && category.image.src">