JSON 从 api 属性 returns 收到的对象未定义
JSON object recieved from api property returns undefined
对于我正在进行的项目,我使用的是 Shopify API,它允许您从商店检索产品和其他信息,以 JSON 对象的格式检索.我能够从 API 成功获取 JSON 对象,但是当我尝试访问 JSON 对象的 属性 时,它 returns 未定义。我看过一些我将在下面引用的文章,但这些用户的问题是需要使用的东西:
JSON.parse()
对于一个 JSON 由字符串包围的对象,这不是我的问题,我也尝试了一些其他的解决方法,但没有运气,我最初认为问题是我的代码需要使用"Async/Await" 函数以等待 API 的响应,但我随后意识到考虑到我可以毫无问题地接收整个 JSON 对象本身,这没有意义。
当我使用:
request.get(url, {headers})
.then( result => {
console.log(result); // Only accessing object itself
});
我正确地收到了 JSON 对象响应,没有这样的错误:
{"products":[{"title":"Test Product 1","body_html":"This is a product that is being tested for retrieval!",
"product_type":"","created_at":"2018-08-21T17:49:07-07:00","handle":"test-product-1","updated_at":"2018-08-21T17:49:07-07:00","published_at":"2018-08-21T17:48:19-07:00","template_suffix":null,"tags":"",
"published_scope":"web","variants":[{"title":"Default Title","price":"5.00","sku":"","position":1,"inventory_policy":"deny",
"compare_at_price":null,"fulfillment_service":"manual","inventory_management":null,"option1":"Default Title","option2":null,"option3":null,
"created_at":"2018-08-21T17:49:07-07:00","updated_at":"2018-08-21T17:49:07-07:00","taxable":true,"barcode":"",
"grams":99790,"image_id":null,"inventory_quantity":1,"weight":220.0,"weight_unit":"lb","old_inventory_quantity":1,
"requires_shipping":true,}],"options":[{"name":"Title","position":1,"values":["Default Title"]}],"images":[],"image":null}]}
然而,当我使用它时,JSON 对象 属性 returns 未定义:
request.get(url, {headers})
.then( result => {
console.log(result.products[0]); // Accessing the first item in JSON "products" array
});
我已经签出的文章:
JSON object returns undefined value
JSON objects returns undefined
谁能解释我的错误或为什么会这样?我非常乐意编辑我的问题以包含任何可能有用的 code/information。
提前致谢,
迈克尔
试试这个:
console.log("data:", JSON.stringify(result.products[0], null, 2));
console.log 将结果打印到您的控制台。使用 Chrome 和开发人员工具,您将看到一个控制台选项 - 非常适合调试。
JSON.stringify 将 JSON 数据变成您可以看到和阅读的内容。您也可以通过这种方式转换数据,然后根据需要拆分。
好的,第二个答案。我无法检查这个,因为我没有你的 JSON 数据,但是,我会尝试一些可能类似于这个的东西......
data.Items[0].字段
如果数据格式不正确,则采用字符串化方法并将其拆分出来。否则,考虑一下:
products":[{"title":"Test Product 1"
variable = products[0].title;
我倾向于使用一个函数一次性提取所有数据。
function Getv(data){ global.myApp.v = JSON.stringify(data, null, 2); }
那我可能运行这个...
Getv(data.Items[0]); let splitData = global.myApp.v.split('\"'); let vCount= splitData.length;
如果对象 returns 像这样,它将无法工作,因为它在 "products" 标识符后缺少一个冒号。就像卢卡说的那样,这不是有效的 JSON 回复
试试这个:
var resultJson = JSON.parse(result);
console.log(resultJson.products[0].varname);
对于我正在进行的项目,我使用的是 Shopify API,它允许您从商店检索产品和其他信息,以 JSON 对象的格式检索.我能够从 API 成功获取 JSON 对象,但是当我尝试访问 JSON 对象的 属性 时,它 returns 未定义。我看过一些我将在下面引用的文章,但这些用户的问题是需要使用的东西:
JSON.parse()
对于一个 JSON 由字符串包围的对象,这不是我的问题,我也尝试了一些其他的解决方法,但没有运气,我最初认为问题是我的代码需要使用"Async/Await" 函数以等待 API 的响应,但我随后意识到考虑到我可以毫无问题地接收整个 JSON 对象本身,这没有意义。
当我使用:
request.get(url, {headers})
.then( result => {
console.log(result); // Only accessing object itself
});
我正确地收到了 JSON 对象响应,没有这样的错误:
{"products":[{"title":"Test Product 1","body_html":"This is a product that is being tested for retrieval!",
"product_type":"","created_at":"2018-08-21T17:49:07-07:00","handle":"test-product-1","updated_at":"2018-08-21T17:49:07-07:00","published_at":"2018-08-21T17:48:19-07:00","template_suffix":null,"tags":"",
"published_scope":"web","variants":[{"title":"Default Title","price":"5.00","sku":"","position":1,"inventory_policy":"deny",
"compare_at_price":null,"fulfillment_service":"manual","inventory_management":null,"option1":"Default Title","option2":null,"option3":null,
"created_at":"2018-08-21T17:49:07-07:00","updated_at":"2018-08-21T17:49:07-07:00","taxable":true,"barcode":"",
"grams":99790,"image_id":null,"inventory_quantity":1,"weight":220.0,"weight_unit":"lb","old_inventory_quantity":1,
"requires_shipping":true,}],"options":[{"name":"Title","position":1,"values":["Default Title"]}],"images":[],"image":null}]}
然而,当我使用它时,JSON 对象 属性 returns 未定义:
request.get(url, {headers})
.then( result => {
console.log(result.products[0]); // Accessing the first item in JSON "products" array
});
我已经签出的文章:
JSON object returns undefined value
JSON objects returns undefined
谁能解释我的错误或为什么会这样?我非常乐意编辑我的问题以包含任何可能有用的 code/information。
提前致谢, 迈克尔
试试这个:
console.log("data:", JSON.stringify(result.products[0], null, 2));
console.log 将结果打印到您的控制台。使用 Chrome 和开发人员工具,您将看到一个控制台选项 - 非常适合调试。
JSON.stringify 将 JSON 数据变成您可以看到和阅读的内容。您也可以通过这种方式转换数据,然后根据需要拆分。
好的,第二个答案。我无法检查这个,因为我没有你的 JSON 数据,但是,我会尝试一些可能类似于这个的东西......
data.Items[0].字段
如果数据格式不正确,则采用字符串化方法并将其拆分出来。否则,考虑一下:
products":[{"title":"Test Product 1"
variable = products[0].title;
我倾向于使用一个函数一次性提取所有数据。
function Getv(data){ global.myApp.v = JSON.stringify(data, null, 2); }
那我可能运行这个...
Getv(data.Items[0]); let splitData = global.myApp.v.split('\"'); let vCount= splitData.length;
如果对象 returns 像这样,它将无法工作,因为它在 "products" 标识符后缺少一个冒号。就像卢卡说的那样,这不是有效的 JSON 回复
试试这个:
var resultJson = JSON.parse(result);
console.log(resultJson.products[0].varname);