Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 使用Vue JS从API获取数据时遇到问题_Json_Vue.js - Fatal编程技术网

Json 使用Vue JS从API获取数据时遇到问题

Json 使用Vue JS从API获取数据时遇到问题,json,vue.js,Json,Vue.js,我在Vue JS中迭代json文件中的数据时遇到问题。我已经准备好了一切,并且可以访问json。我在这里遗漏了什么: JSON { "test": "example", "data": [ { "name": "My Name", "address": "My Address" } ] } Vue JS html {{ someData['name'] }} <ul> <li v-for="item in someDa

我在Vue JS中迭代json文件中的数据时遇到问题。我已经准备好了一切,并且可以访问json。我在这里遗漏了什么:

JSON

{
  "test": "example",
  "data": [
    {
      "name": "My Name",
      "address": "My Address"
    }
  ]
}
Vue JS html

{{ someData['name'] }}

<ul>
  <li v-for="item in someData" v-bind:key="item.id">
    {{ item }}
  </li>
</ul>
我得到的结果是:

created() {
    this.$http.get('http://localhost:3000/properties.json').then(response => {
      // get body data
      this.someData = response.body
    }, response => {
      // error callback
    });
  }


正如您所看到的,在我的v-for中,简单地指定item会抓取这里的每个项,但我希望能够执行类似{{item['name']}和{{item['address']}}

的操作,您可以简单地执行以下操作:

<template v-for="(item, key) in someData">
  <span v-if="key == 'address'">{{item}}</span>
</template>

{{item}}

您只需执行以下操作:

<template v-for="(item, key) in someData">
  <span v-if="key == 'address'">{{item}}</span>
</template>

{{item}}

主要问题在JSON文件中。VueJS v-for正在迭代JSON文件中的键,在本例中,{{item}}将获得名称和地址。这就是您输出的原因

要解决这个问题

将JSON文件格式化为

[{name: 'John', address: 'Jane'}]
执行此操作时,VueJS v-for将在JSON数组上迭代,{{item}将获得值{name:'John',address:'Jane'},现在您可以执行{{item.name}{{item.address}

一个例子

编辑:更新API请求代码

created() {
    this.$http.get('http://localhost:3000/properties.json').then(response => {
      // get body data
      this.someData = [response.body]
    }, response => {
      // error callback
    });
  }

主要问题在JSON文件中。VueJS v-for正在迭代JSON文件中的键,在本例中,{{item}}将获得名称和地址。这就是您输出的原因

要解决这个问题

将JSON文件格式化为

[{name: 'John', address: 'Jane'}]
执行此操作时,VueJS v-for将在JSON数组上迭代,{{item}将获得值{name:'John',address:'Jane'},现在您可以执行{{item.name}{{item.address}

一个例子

编辑:更新API请求代码

created() {
    this.$http.get('http://localhost:3000/properties.json').then(response => {
      // get body data
      this.someData = [response.body]
    }, response => {
      // error callback
    });
  }

关键的一点是
v-for=“item in someData”
someData
对象组件视图的一部分,即
“John”
“Jane”


根据您的具体目标,您应该将JSON重新格式化为对象数组(如@F.bernal所建议),或者更改
v-for
指令的逻辑。

关键点是
v-for=“item in someData”
someData
对象组件视图中的一部分,即
“John”
“Jane”


根据您的具体目标,您应该将JSON重新格式化为一个对象数组(如@F.bernal所建议),或者更改
v-for
指令的逻辑。

请指定
someData
指的是什么,
someData
仅用于测试目的。我刚刚用一些新的JSON数据更新了上面的问题,因为我在这部分遇到了问题。请指定
someData
所指的内容。嗨,
someData
仅用于测试目的。我刚刚用一些新的JSON数据更新了我上面的问题,因为我在这方面遇到了麻烦谢谢,但我的JSON将来自API或JSON文件,我将如何适应它?太棒了!非常感谢你。我刚刚想到,我的数据将包含这样的倍数:```{“test”:“example”,“data”:[{“name”:“my name”,“address”:“my address”}]}```所以现在,我试着做:{{item.data.name}}},但没有成功?有什么建议吗?通过JSON修改,你必须更新你创建的()方法来满足您的需要。在这种情况下,在不查看代码的情况下,我认为您将添加这个。this.someData=response.body.data.Thank,但是我的json将来自一个API或json文件,我将如何适应它?太棒了!非常感谢你。我刚刚想到,我的数据将包含这样的倍数:```{“test”:“example”,“data”:[{“name”:“my name”,“address”:“my address”}]}```所以现在,我试着做:{{item.data.name}}},但没有成功?有什么建议吗?通过JSON修改,你必须更新你创建的()方法来满足您的需要。在这种情况下,在不查看代码的情况下,我认为您将添加这个。this.someData=response.body.data。