如何将此 javascript 转换为 JSON

问题描述 投票:0回答:2

我如何构建我的数据,例如,有一个问题与 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(leaves),我只是不知道如何从向后构建它(从 javascript)谢谢

javascript json
2个回答
4
投票

请参阅下面的更新

如果您已有 JavaScript 对象,请在其上使用

JSON.stringify
来获取等效的 JSON 字符串。 Douglas Crockford(JSON 的创始人)
在他的 github 页面上
在 json2.js 中实现了 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]
};

0
投票

JSON.parse
是将JSON文本转换为JS对象的方法:

var obj = JSON.parse(myJSONtext);

要将 JS 对象转换为 JSON 文本,请使用

JSON.stringify
:

var myJSONText = JSON.stringify(obj);

请参阅此处了解更多详细信息。 http://json.org/js.html

© www.soinside.com 2019 - 2024. All rights reserved.