json:
{
"code": 0,
"msg": "success",
"data": [
{
"symbol": "BTC",
"price": 56473.54,
"openInterest": 20556043828.255978,
"volUsd": 80300126118.31464,
"openInterestAmount": 364049.3,
"longRate": 52.83,
"longVolUsd": 40150822052.32335,
"shortRate": 47.17,
"shortVolUsd": 40156423832.06615,
"turnoverNumber": 13221636,
"priceChange": 1546.35,
"priceChangePercent": 2.82,
"volChangePercent": -30.3,
"symbolLogo": "https://cdn.sampyun.com/static/coins/btc@2x.png",
"liqInfo": {
"symbol": "BTC",
"longVolUsd": 166022220.78610313,
"shortVolUsd": 467377610.54825574,
"symbolLogo": "https://cdn.sampyun.com/static/coins/btc@2x.png",
"totalVolUsd": 633399831.3343589,
"amount": 11217.5655,
"number": 34156
},
"tags": [
],
"oichangePercent": -0.45
}
}
我想获取liqInfo下的totalVolUsd:
<tr v-for="(item,index) in sitea">
<td align="right">{{item.liqInfo.totalVolUsd}}</td>
</tr>
但是报错:
TypeError: Cannot read property 'totalVolUsd' of undefined
用的是vue2.6.12版本。
<tr v-for="(item,index) in sitea">
<td align="right">{{(item.liqInfo || {}).totalVolUsd}}</td>
</tr>
item.liqInfo 数据为undefined 做容错处理
你这个list数据sitea,获取估计有问题
<tr v-for="(item,index) in data">
<td align="right">{{item.liqInfo.totalVolUsd}}</td>
</tr>
应该是data吧,除非你其他的地方把data赋值给了sitea,那你就先打印item看有没有值
将Json赋值给某个对象,let formData = {};在获取Json后将其赋值给formData = data.data或者是formData = data.data.liqInfo;这样应该就可以获取到了
知道问题了。。你的数据接口返回的数据GOLD这个货币没有liqInfo,所以报错了。要将丢失liqInfo的项加上就行了~
axios.get('http://video.w3dev.cn/index/bit')
.then((res) => {
var data = res.data.data.filter(function (i) { return !i.liqInfo });
for (let v of data) v.liqInfo = { totalVolUsd:0};//补全liqInfo就可以了
vm.sitea = res.data.data
})
.catch(error => { console.log(error); })
你的Json格式错误的,倒数第二行少了一个"]",正确的格式如下:
{
"code": 0,
"msg": "success",
"data": [
{
"symbol": "BTC",
"price": 56473.54,
"openInterest": 20556043828.255978,
"volUsd": 80300126118.31464,
"openInterestAmount": 364049.3,
"longRate": 52.83,
"longVolUsd": 40150822052.32335,
"shortRate": 47.17,
"shortVolUsd": 40156423832.06615,
"turnoverNumber": 13221636,
"priceChange": 1546.35,
"priceChangePercent": 2.82,
"volChangePercent": -30.3,
"symbolLogo": "https://cdn.sampyun.com/static/coins/btc@2x.png",
"liqInfo": {
"symbol": "BTC",
"longVolUsd": 166022220.78610313,
"shortVolUsd": 467377610.54825574,
"symbolLogo": "https://cdn.sampyun.com/static/coins/btc@2x.png",
"totalVolUsd": 633399831.3343589,
"amount": 11217.5655,
"number": 34156
},
"tags": [
],
"oichangePercent": -0.45
}
]
}
可能某条数据中缺失 totalVolUsd 这个字段,容错一下