Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js 从JSON中提取值_Node.js_Json - Fatal编程技术网

Node.js 从JSON中提取值

Node.js 从JSON中提取值,node.js,json,Node.js,Json,因此,我需要使用node.js从第三方网站获取一个值。数据是JSON格式的。我的代码适用于其他类似的原因,但不适用于这个原因。我需要从相关商品中扣除价格。数据的结构如下所示: { "Glock-18 | Weasel (Battle-Scarred)": 0.52, "PP-Bizon | Photic Zone (Minimal Wear)": 0.18, "SSG 08 | Ghost Crusader (Field-Tested)": 0.62, "Spectrum Case Key":

因此,我需要使用node.js从第三方网站获取一个值。数据是JSON格式的。我的代码适用于其他类似的原因,但不适用于这个原因。我需要从相关商品中扣除价格。数据的结构如下所示:

 {
"Glock-18 | Weasel (Battle-Scarred)": 0.52,
"PP-Bizon | Photic Zone (Minimal Wear)": 0.18,
"SSG 08 | Ghost Crusader (Field-Tested)": 0.62,
"Spectrum Case Key": 2.63,
"Sticker | shroud (Foil) | Krakow 2017": 5.62,
"Sticker | North | London 2018": 0.2,
"XM1014 | Slipstream (Field-Tested)": 0.08
}
我当前的代码如下所示:

var Request = require("request");
var name ="Sticker | shroud (Foil) | Krakow 2017";

Request.get("url", (error, response, body) => {
    if(error) {
        return console.dir(error);
    }

    var object = JSON.parse(body);
    var price = object.name;
    console.log("price", price);
});

你知道为什么我的价格总是输出为未定义的吗?

你应该尝试使用
var price=object[name]
因为您想使用
名称
作为变量<代码>对象。名称不会这样做

您始终可以使用
console.log(对象)进行故障排除让自己相信你得到了正确的东西

<>最好的结果,考虑以这种方式进行错误检查。(永远不要相信网站,嗯?)


您应该尝试使用
var price=object[name]
因为您想使用
名称
作为变量<代码>对象。名称
不会这样做

您始终可以使用
console.log(对象)进行故障排除让自己相信你得到了正确的东西

<>最好的结果,考虑以这种方式进行错误检查。(永远不要相信网站,嗯?)


使用
object.name
将假定您有一个属性为
name
的对象,例如:
{“name”:“something”}
那么如何提取特定项的值?您可以使用
var keys=object.keys(object)获取属性键这将返回一个数组<代码>[“格洛克-18 |黄鼠狼(战痕)”,“PP Bizon |光区(最小磨损)”,…]
现在您可以使用键提取值。例如:
console.log(键[0],对象[keys[0])我会将其转换为对象数组<代码>var arr=Object.keys(Object.map)(o=>({name:o,price:Object[o]}))这样您就可以使用您的方法<代码>可变项目=arr[0];console.log(item.name,item.price)
可以工作,但不幸的是,我需要一个能够根据名称而不是数组索引查找值的解决方案。使用
object.name
将假定您有一个属性为
name
的对象,例如:
{“name”:“something”}
如何提取特定项目的值?您可以使用
var keys=Object.keys(Object)获取属性键这将返回一个数组<代码>[“格洛克-18 |黄鼠狼(战痕)”,“PP Bizon |光区(最小磨损)”,…]
现在您可以使用键提取值。例如:
console.log(键[0],对象[keys[0])我会将其转换为对象数组<代码>var arr=Object.keys(Object.map)(o=>({name:o,price:Object[o]}))这样您就可以使用您的方法<代码>可变项目=arr[0];console.log(item.name,item.price)可以,但不幸的是,我需要一个能够根据名称而不是数组的索引找到值的解决方案。是的,这正是我需要的。谢谢是的,这正是我需要的。谢谢
var object;
try {
    object = JSON.parse(body);
catch (e) {
   return console.dir('body not parseable', body, e);
}
if (!object) return console.dir('no object retrieved');
if (!object.hasOwnProperty(name)) return console.dir ('property not found', name);
var price = object[name];
console.log("price", price);