You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript无法解析Amazon API JSON响应,获取FormattedPrice返回undefined

解决Amazon API JSON响应中FormattedPrice字段访问返回undefined的问题

嘿,我来帮你搞定这个问题!先看看你拿到的JSON结构——它是嵌套的对象(用{}包裹),不是数组,所以你尝试的数组下标写法(比如Result[0])肯定行不通,这大概率是问题所在。

先把你的JSON响应格式化一下,看得更清楚:

{
  "Result": {
    "Data": {
      "Title": "HALO 3 (XBOX 360 - REGION FREE)",
      "FormattedPrice": "$19.95",
      "Source": "Product Description",
      "Content": "The epic saga continues..."
    }
  }
}

核心问题分析

这里的Result和Data都是对象,不是数组(数组是[]),所以不能用[0]这种数组索引去访问它们的属性。你最开始写的var price1 = Response.Result.Data.FormattedPrice;其实是正确的路径,但可能有其他隐藏问题导致返回undefined,我给你列几个排查方向:


1. 确认响应是否已解析为JavaScript对象

很多时候从API拿到的原始响应是JSON字符串,不是可直接访问的JS对象。如果没解析就去访问属性,肯定会返回undefined。比如用fetch请求的话,需要先调用.json()方法解析:

// 举个fetch请求的例子
fetch('你的Amazon API接口地址')
  .then(rawResponse => rawResponse.json()) // 把JSON字符串转成JS对象
  .then(parsedResponse => {
    const price = parsedResponse.Result.Data.FormattedPrice;
    console.log(price); // 这里应该能正常输出$19.95
  });

如果是用XMLHttpRequest,也要记得用JSON.parse()解析响应文本:

const xhr = new XMLHttpRequest();
xhr.open('GET', '你的Amazon API接口地址');
xhr.onload = function() {
  const parsedResponse = JSON.parse(xhr.responseText);
  const price = parsedResponse.Result.Data.FormattedPrice;
  console.log(price);
};
xhr.send();

2. 检查变量名和属性名的拼写/大小写

JavaScript是大小写敏感的!比如你要是把FormattedPrice写成formattedPrice,或者把Response写成response(小写开头),都会导致找不到属性返回undefined。一定要严格匹配JSON里的属性名。

3. 排除变量名冲突

确认你的Response变量确实指向了API返回的完整对象,有没有其他代码不小心覆盖了这个变量?可以先在控制台打印console.log(Response),看看输出的结构是不是和你给出的JSON一致。


正确访问写法示例

当响应已经被正确解析为JS对象后,直接用对象属性链访问即可:

// 假设parsedResponse是解析后的API响应对象
const price = parsedResponse.Result.Data.FormattedPrice;
console.log(price); // 输出: $19.95

内容的提问来源于stack exchange,提问作者GenesisBits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:05:39