簡體   English   中英

如何將此JavaScript轉換為JSON

[英]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.

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