Json未解析为对象/数组

时间:2019-07-02 04:17:31

标签: javascript json

我正在NodeJS中从MongoDB检索数据,并尝试将元素放入javascript数组。

数据似乎没有解析为jsonParsed。

我想念什么?

var jsonData = '{"GTO": 2000.0, "GAME": 100.0, "SBD": 0.0, "RVR": 1000.0, 
"BTC": 0.01153921, "JNT": 5000.0, "ETH": 10.20597219, "MUSIC": 100000.0, 
"ENJ": 200.0}';
var jsonParsed = JSON.parse(jsonData);

console.log(jsonParsed)

var i;
for (i=0;i < jsonParsed.length; i++){
    console.log(jsonParsed[i]);
}

4 个答案:

答案 0 :(得分:0)

您想做类似的事情吗?

var jsonString = `{
  "op": "create",
  "collection": "test",
  "args": [
    { "a": 1 },
    { "b": 2 },
    { "c": 3 }
  ]
}`
var output = [];
var config= JSON.parse(jsonString);
console.log ("op is"+ config.op);
console.log("keys:")
for(var x of config.args){
  for(var key in x){
    console.log(x[key]);
    output.push(x[key]);
  }
}
console.log("Final Array:")
console.log(output);

答案 1 :(得分:0)

我将假设MongoDB实际上返回了一个对象(否则,您确实应该检查模型的配置是否正确),并且引号只是拼写错误。

如果您的目标是创建对象数组。.[{...}, {...}]

您可以执行以下操作:

var jsonData = {"GTO": 2000.0, "GAME": 100.0, "SBD": 0.0, "RVR": 1000.0, "BTC": 0.01153921, "JNT": 5000.0, "ETH": 10.20597219, "MUSIC": 100000.0, "ENJ": 200.0}

const newArr = Object.entries(jsonData).map(([key, price]) => {
	return {[key] : price}
})


console.log(newArr)

对于较旧版本的Node,您几乎可能需要 polyfill 。如果收到错误消息Object.entries不是函数,请在执行逻辑之前运行此命令:

if (!Object.entries) {
  Object.entries = function( obj ){
    var ownProps = Object.keys( obj ),
        i = ownProps.length,
        resArray = new Array(i); // preallocate the Array
    while (i--)
      resArray[i] = [ownProps[i], obj[ownProps[i]]];

    return resArray;
  };
}

答案 2 :(得分:0)

这是您解决问题的方法

var jsonData = '{"GTO": 2000.0, "GAME": 100.0, "SBD": 0.0, "RVR": 1000.0, 
"BTC": 0.01153921, "JNT": 5000.0, "ETH": 10.20597219, "MUSIC": 100000.0, 
"ENJ": 200.0}'

var jsonParsed = JSON.parse(jsonData);
var keys = Object.keys(jsonParsed)
for(var i=0;i<keys.length;i++){
 console.log(jsonParsed[keys[i]])
}

答案 3 :(得分:0)

如果不能用新行将字符串断开(按Enter键),则需要用+连接字符串。或者您可以在ES6中使用``将字符串分成多行

var jsonData = '{"GTO": 2000.0, "GAME": 100.0, "SBD": 0.0, "RVR": 1000.0, '+
'"BTC": 0.01153921, "JNT": 5000.0, "ETH": 10.20597219, "MUSIC": 100000.0, '+
'"ENJ": 200.0}';
var jsonParsed = JSON.parse(jsonData);

console.log(jsonParsed)

var i;
for (i=0;i < jsonParsed.length; i++){
    console.log(jsonParsed[i]);
}