【问题标题】:Why am I getting [object Object] after accessing JSON data?为什么我在访问 JSON 数据后得到 [object Object]?
【发布时间】:2020-10-23 19:25:45
【问题描述】:

我正在发出一个简单的 GET 请求并用一些数据填充网页。除了包含两个数组的“地址”之外,其他所有行都有效,并且在我的网页上它打印出“[object Object]”,而不是数据。这是 JSON 的一个示例(对格式不佳表示歉意):

data: Array(7)
   0:
   addresses: Array(2)
   0:
     city: "Houghton"
     line1: "800 East Lakeshore Drive"
     line2: ""
     line3: ""
     postalCode: "49931"
     stateCode: "MI"
     type: "Physical"

原型:对象

这是我尝试访问“地址”的代码块:

for (let i = 0; i < parkData.length; i++) {
    $("#results-list").append(`<h2>${parkData[i].fullName}</h2>
    <p>${parkData[i].addresses[0]}</p>
    <a href=${parkData[i].directionsUrl}>Directions</a><br>
    <a href=${parkData[i].url}>Website</a>
    <p>${parkData[i].description}</p>

就像我上面所说的,所有其他行都有效,但是当我尝试获取地址的第一个索引时,我只是得到了那个奇怪的对象响应。有任何想法吗?谢谢!

【问题讨论】:

  • 这不是 JSON。这是 javascript 对象数据。他们是不同的
  • 向我们展示完整的parkData 对象

标签: javascript api get


【解决方案1】:

[object Object] 意味着它不是一个字符串,而是一个对象,它(可能)有一个地址作为该对象的属性,即您需要访问一些属性而不是parkData[i].addresses[0](我无法从您的代码中得知您没有显示从 JSON 获得的整个对象),例如:

const {city, line1} = parkData[i].addresses[0].city
const fullAddress = `City: {city}, Address: {line1}`

只有这样,在构造地址之后,你才能将它添加到你的页面中作为fullAddress

【讨论】:

  • 如果对您有帮助,请将答案标记为已接受 :)
【解决方案2】:

这是因为您肯定需要更深入地了解某些属性。仔细检查每次迭代,您会发现您正在附加一个对象。我认为您没有粘贴所有回复。可以使用jsonviewer更好的查看结构

Edit-> 正如我所见...address 是一个对象,因此您需要对其进行迭代以附加字符串。

所以应该是: ... address[0].map(a => ... a.someAddressProperty

【讨论】:

  • 嗨,我刚刚编辑了原始帖子并添加了完整的对象。地址被分成不同的行,所以我不确定如何获得完整的地址。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2019-03-27
  • 2019-05-18
  • 1970-01-01
相关资源
最近更新 更多