javascript JSON解析初始化值

时间:2015-11-30 06:15:26

标签: javascript json

我想用数据解析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对象和变量。

3 个答案:

答案 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都是可怕的变量名。如果它不会导致解析错误,那么某些时候肯定会让某些人感到困惑。那个人可能是你未来的自我。