簡體   English   中英

javascript JSON 解析初始化值

[英]javascript JSON parse initialize value

我想用數據將 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/

我得到錯誤:

未捕獲的語法錯誤:意外的令牌 I

我希望我之前可以將 json 解析為 js 對象和對象初始化值中的變量,並使用初始化變量。

您引用了字符串中的變量,因此無法使用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);


如果您只需要創建對象,那么您可以使用對象文字,如果需要 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()最糟糕的方法,但我不會更喜歡這種方法。

為什么使用 JavaScript eval 函數是個壞主意?

 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);

在解析之前你需要一個純字符串。

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);

但我不確定你為什么要這樣做。

除非您有使用字符串的特定原因,否則為什么不使用這樣的對象字面量呢?

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 都是糟糕的變量名。 如果它不會導致解析錯誤,它肯定會在某個時候混淆某些人。 那個人可能是你未來的自己。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM