如何将此javascript转换为JSON

时间:2011-03-27 13:20:51

标签: javascript json

如何构建我的数据,例如,有一个问题与5个选项相关联,并且每个选项都有与之相关的投票?如果你把它想象成一棵树,那么问题就是拥有5片叶子的根,选择,每个选择只有一片叶子,投票。

 var myJSONObject = {"bindings": [
    {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
    {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
    {"ircEvent": "PRIVMSG", "method":

我想要这样做的原因是我想在我的javascript字符串化之后有一个树状结构。上面的代码是来自JSON.org,我想我希望结构像“绑定”有3个ircEvents(叶子),我只是不知道如何从后面构建这个(来自javascript)谢谢

2 个答案:

答案 0 :(得分:3)

请参阅下面的更新

如果您已经有JavaScript对象,请在其上使用JSON.stringify来获取等效的JSON字符串。道格拉斯·克罗克福德(JSON的创始人)on his github page在json2.js中实现了JSON.stringify。越来越多的浏览器现在已经内置它已经标准化,但很多(很多)没有,所以现在我们仍然必须使用实用程序脚本(Crockford或其他)。

从根本上说,从对象图生成JSON非常容易(这是JSON的一个要点,很容易生成和使用)。

JSON是JavaScript Object Literal表示法的子集。所以这个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对象基本上是相当自由的键/值对集合(例如,“map”或“dictionaries”)。所以:

// 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]
};

答案 1 :(得分:0)

将JSON文本转换为JS对象的最简单方法是使用“eval()”。

var obj = eval('(' + myJSONtext + ')');

然而,eval()存在安全问题,因为我们可以编译并执行其中的任何javascript代码。因此,建议使用“parse”将JSON文本转换为JS对象。

var obj = JSON.parse(myJSONtext);

要将JS对象转换为JSON Text,请使用stringify。

var myJSONText = JSON.stringify(obj);

请点击此处了解更多详情。 http://json.org/js.html