[英]How do I convert this javascript into JSON
我如何構造數據,例如,有一個問題與5個選擇相關聯,並且每個選擇都有與之相關聯的投票? 如果您把它想像成一棵樹,那么問題是有5片葉子的根,選擇,而每個選擇只有1片葉子,投票。
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method":
我要執行此操作的原因是,在對JavaScript進行字符串化后,我希望具有樹狀結構。 上面的代碼來自JSON.org,我想我想像“綁定”這樣的結構有3個ircEvents(葉子),我只是不知道如何從后向構建(來自javascript)謝謝
請參閱下面的更新
如果您已有JavaScript對象, JSON.stringify
在其上使用JSON.stringify
來獲取等效的JSON字符串。 Douglas Crockford(JSON的創建者) 在他的github頁面上的JSON.stringify
中實現了JSON.stringify
。 現在已經內置了越來越多的瀏覽器,因為它已經標准化了,但是很多(很多)還沒有,所以現在我們仍然必須使用實用程序腳本(Crockford的或另一個)。
從根本上講,從對象圖生成JSON非常容易(這是JSON的要點之一,易於生成和使用)。
JSON是JavaScript對象文字表示法的子集。 所以這個JavaScript(不是JSON)對象:
{"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}
]
}
看起來和 JSON中的樣子完全一樣。 如果要將其放入文件中,則可以將其讀取到內存中,或者從服務器等中讀取。 如果要在JavaScript代碼中嵌入包含JSON的字符串(也許很奇怪,但是),只需將其用引號引起來:
var aJSONString = '{"bindings": [' +
'{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},' +
'{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}' +
']' +
'}';
如果您編寫的JavaScript字面量在鍵名周圍沒有引號,或者使用了單引號,則必須進行更改,因為JSON特別要求鍵名和所有字符串都用雙引號引起來。 因此,此JavaScript對象文字:
{foo: 'bar'}
變成
{"foo": "bar"}
在JSON中。
更新 :在下面重新發表您的評論:對不起,我誤解了這個問題。
用JavaScript構建樹結構非常容易。 JavaScript對象從根本上說是鍵/值對(例如“地圖”或“字典”)的相當自由形式的集合。 所以:
// Start with a blank object
var obj = {};
// Add a leaf to it
obj.foo = {};
// Add a leaf under the leaf, with the value 42
obj.foo.subfoo = 42;
// Add a new leave to the root; this one's an array with 1, 2, and 3 in it
obj.bar = [1, 2, 3];
alert(JSON.stringify(obj));
// '{"foo: {"subfoo": 42}, "bar": [1, 2, 3]}'
您當然可以將其寫為文字,但是我想您知道:
var obj = {
foo: {
subfoo: 42
},
bar: [1, 2, 3]
};
您可能不知道的是,文字右側的內容可以是變量。 它們的值將被使用,就像賦值一樣。 因此,這給了我與上述完全相同的obj
:
var fortytwo = 42;
var obj = {
foo: {
subfoo: fortytwo
},
bar: [1, 2, 3]
};
將JSON文本轉換為JS對象的最簡單方法是使用“ eval()”。
var obj = eval('(' + myJSONtext + ')');
但是eval()存在安全問題,因為我們可以在其中編譯和執行任何javascript代碼。 因此建議使用“ parse”將JSON文本轉換為JS對象。
var obj = JSON.parse(myJSONtext);
要將JS對象轉換為JSON文本,請使用stringify。
var myJSONText = JSON.stringify(obj);
有關更多詳細信息,請參見此處。 http://json.org/js.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.