如何构建我的数据,例如,有一个问题与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)谢谢
答案 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