Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Javascript 无法通过索引解析Json_Javascript_Arrays_Json_Node.js - Fatal编程技术网

Javascript 无法通过索引解析Json

Javascript 无法通过索引解析Json,javascript,arrays,json,node.js,Javascript,Arrays,Json,Node.js,我正在尝试解析JSON文件,但遇到了一些问题 {"prices": {"XRP/ETH": "0.0011228", "LTC/XRP": "187.7162", "BCH/INR": "53200.000", "LTC/BCH": "0.0729828", "LTC/BTC": "0.01567781", "LTC/ETH": "0.1948464", "XRP/BTC": "0.00006908", "BCH/ETH": "1.6930769", "XRP/INR": "32.000", "

我正在尝试解析JSON文件,但遇到了一些问题

{"prices": {"XRP/ETH": "0.0011228", "LTC/XRP": "187.7162", "BCH/INR": "53200.000", "LTC/BCH": "0.0729828", "LTC/BTC": "0.01567781", "LTC/ETH": "0.1948464", "XRP/BTC": "0.00006908", "BCH/ETH": "1.6930769", "XRP/INR": "32.000", "XRP/BCH": "0.0003879", "BCH/BTC": "0.22700587", "ETH/INR": "30500.000", "LTC/INR": "5280.000", "BTC/INR": "453000.000", "ETH/BTC": "0.07717977"}, "market": {"XRP/ETH": {"top_ask": "0.0010922 ETH", "top_bid": "0.0009030 ETH"}, "LTC/XRP": {"top_ask": "193.2886 XRP", "top_bid": "165.0000 XRP"}, "BCH/INR": {"top_ask": "56000.000 INR", "top_bid": "46100.000 INR"}, "LTC/BCH": {"top_ask": "0.1249458 BCH", "top_bid": "0.0942857 BCH"}, "LTC/BTC": {"top_ask": "0.01280000 BTC", "top_bid": "0.01147826 BTC"}, "LTC/ETH": {"top_ask": "0.1965870 ETH", "top_bid": "0.1600000 ETH"}, "XRP/BTC": {"top_ask": "0.00007111 BTC", "top_bid": "0.00006478 BTC"}, "BCH/ETH": {"top_ask": "1.9112628 ETH", "top_bid": "1.3969697 ETH"}, "XRP/INR": {"top_ask": "32.000 INR", "top_bid": "29.800 INR"}, "XRP/BCH": {"top_ask": "0.0006941 BCH", "top_bid": "0.0005321 BCH"}, "BCH/BTC": {"top_ask": "0.12444444 BTC", "top_bid": "0.10021739 BTC"}, "ETH/INR": {"top_ask": "33000.000 INR", "top_bid": "29300.000 INR"}, "LTC/INR": {"top_ask": "5760.000 INR", "top_bid": "5280.000 INR"}, "BTC/INR": {"top_ask": "460000.000 INR", "top_bid": "450000.000 INR"}, "ETH/BTC": {"top_ask": "0.07333333 BTC", "top_bid": "0.06369565 BTC"}}}
我试图用Javascript解析它,但我收到一个未定义对象的错误

我的javascript代码:-

request(ticker, function (err, body) {
    var a = JSON.parse(body.body);
    var p= a.prices;
    console.log(p[0]);
    console.log(p.length);

});
我希望console.log打印出JSON中的第一次迭代,即XRP/ETH,我也想找到数组的长度,但我收到一个未定义的错误,因为a.prices不是一个要用数字键索引的数组,而是一个对象:

注意大括号{}

因此,a.prices[0]无效,但a.prices[XRP/ETH]正确:

var a={价格:{XRP/ETH:0.0011228}
控制台loga价格[XRP/ETH] 正如juzraai所说,您不能通过索引结构[0]访问对象,您需要通过键结构[key]访问对象,但是可以从键:值的角度对对象的内容进行迭代,并且只记录第一次迭代,就像这样

    request(ticker, function (err, body) {
    var a = JSON.parse(body.body);
    var p= a.prices;
    var count = 0;
    for (var k in p){
       //Ensure key exists in dict
       if (p.hasOwnProperty(k)) {
        if(count < 1){
        alert("Key is " + k + ", value is" + target[k]);

    }
    count++;        
       }
    }   
    console.log(count);
});
很少观察到:

您的JSON已经是一个对象。因此,无需再次解析它。 价格是一个对象而不是数组。因此,它应该是p[XRP/ETH],而不是p[0]。 由于p不是数组,因此p.length将不起作用。相反,您可以尝试Object.keysp.length。 演示

价格:{价格:{价格:{价格:{价格:{XRP/ETH:0.0011228,LTC/XRP:187.7162,BCH/INR:53200.000,LTC/BCH:0.0729828,LTC/BTC:0.01567781,LTC/ETH:0.017,LTC/ETH:0.0010.0011228,LTC:0.0017:0.017,LTC/BC:0.0729288:0.0729828,LTC/BTC:0.0.01588:0.0156588:0.01567781,LTC:0.01568,LTC:0.01568,LTC:0.01568:0.015681,LTC/ETH/ETH:0.1948464:0.1948464,0.1948464,XRP/64,XRP/BTC:0.RP/ETH:2009年,LTC/XRP:{顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶问:193.288 6 XRP,顶顶顶顶顶出价:165.0000 XRP},BCH/投标:165.000万XRP},BCH/INR:{顶顶顶顶顶顶顶问:165.0.0万XRP},BCH,BCH/印度政府问:0.0010.0010.0010.0010.00出价:出价:165.00万XRP,BCH,BCH,BCH/投标报价:1,BCH/投标报价:1,BCH/INH/INR/INR::{,BCH/INR:{,BCH:{,BCH:{BCH:{{0.0.0.0.0.0.0.0.0.0.00出价:165.00出价:165.00出价:165.00出价:165.00_出价:1600000 ETH},XRP/BTC:{top_ask:0.00007111 BTC,top_bid:0.00006478 BTC},BCH/ETH:{top_ask:1.9112628 ETH,top_bid:1.3969697 ETH},XRP/INR:{top ask:32.000 INR,top bid:29.800 INR},XRP/BCH:{top_ask_ask:0.0006941 BCH,top bid:0.0005321 BCH},BCH/BTC:{top 124444,BTC:10020 BTC:{最高出价:33000.000印度卢比,最高出价:29300.000印度卢比,{最高出价:5760.000印度卢比,最高出价:5280.000印度卢比,{最高出价:460000.000印度卢比,最高出价:450000.000印度卢比,ETH/BTC:{最高出价:0.07333333印度卢比,最高出价:0.06369565印度卢比}; var p=目标价格; 控制台.logp[XRP/ETH];
console.logObject.keysp.length;p不是数组,它是一个对象,您应该使用object。对于这个。是否有一个内置函数将其转换为数组?我还想找出价格中的成员总数,这可能吗?
    request(ticker, function (err, body) {
    var a = JSON.parse(body.body);
    var p= a.prices;
    var count = 0;
    for (var k in p){
       //Ensure key exists in dict
       if (p.hasOwnProperty(k)) {
        if(count < 1){
        alert("Key is " + k + ", value is" + target[k]);

    }
    count++;        
       }
    }   
    console.log(count);
});