我想用数据解析json到js对象。这是我的简单例子:
var IsTrue = true;
var Number = 9;
var Object = { a : 1};
var Array = [10,6];
var jStr = '{"ask" : IsTrue, "value" : Number, "obj" : Object, "arr" : Array}';
var js = JSON.parse(jStr);
console.log(js);
我在这个jsfiddle工作:http://jsfiddle.net/n4tLgp5k/1/
我收到错误:
未捕获的SyntaxError:意外的令牌I
我希望我能用之前的初始化变量将json解析为对象初始化值中的js对象和变量。
答案 0 :(得分:1)
您在字符串中引用了变量,因此无法使用JSON.parse()
对其进行解析。将字符串转换为有效的JSON,您可以使用JSON.stringify()
。
var IsTrue = true;
var Number = 9;
var Object = {
a: 1
};
var Array = [10, 6];
var jStr = '{"ask" : ' + JSON.stringify(IsTrue) + ', "value" :' + JSON.stringify(Number) + ', "obj" : ' + JSON.stringify(Object) + ', "arr" : ' + JSON.stringify(Array) + '}';
var js = JSON.parse(jStr);
console.log(js);

如果您只需要创建对象,则可以使用 object literals ,如果需要json字符串,则可以使用JSON.stringify()
var IsTrue = true;
var Number = 9;
var Object = {
a: 1
};
var Array = [10, 6];
var js = {
ask: IsTrue,
value: Number,
obj: Object,
arr: Array
};
console.log(js);

使用eval()
也有最糟糕的方法,但我不喜欢这种方法。
Why is using the JavaScript eval function a bad idea?
var IsTrue = true;
var Number = 9;
var Object = {
a: 1
};
var Array = [10, 6];
var jStr = '{"ask" : IsTrue, "value" : Number, "obj" : Object, "arr" : Array}';
var js = eval('(' + jStr + ')');
console.log(js);

答案 1 :(得分:1)
在解析之前需要一个纯字符串。
var IsTrue = true,
Number = 9,
Object = { a : 1},
Array = [10,6];
var jStr = {"ask" : IsTrue, "value" : Number, "obj" : Object, "arr" : Array};
var js = JSON.parse(JSON.stringify(jStr));
console.log(js);
但我不确定你为什么要这样做。
答案 2 :(得分:0)
除非您有使用字符串的具体原因,为什么不使用这样的object literal?
var IsTrue = true;
var Number = 9;
var Object = { a : 1};
var Array = [10,6];
var js = {
"ask" : IsTrue,
"value" : Number,
"obj" : Object,
"arr" : Array
};
console.log(js);
虽然您应该避免使用类型作为变量名称。 Number,Object,Array都是可怕的变量名。如果它不会导致解析错误,那么某些时候肯定会让某些人感到困惑。那个人可能是你未来的自我。