构建一个json树结构

时间:2012-05-23 08:53:11

标签: javascript jquery json

我将通过ajax请求将json字符串传递给servlet:

function add() {
    $.ajax({
    url: "pathToServlet" ,
    dataType: "text",
    data: ({
        name : 'myJsonString'
    }),
    success: function(data) {
            alert('returned!!');
    });
}

为了构建这个json字符串,我有一个监听器,当它被触发时,将一个新的json附加到字符串:

var json = "";
json += "{ new json ..... }"

这是构建jSon String的正确方法吗?我应该使用jQuery方法创建一个json对象(如果它们存在)并向其添加元素然后将json对象转换为字符串而不是自己创建json字符串?

2 个答案:

答案 0 :(得分:2)

我建议做的是构建对象,然后当您准备好将其发送到服务器时,通过JSON.stringify序列化对象。

例如,您可能有一个名为data的对象:

var data = {};

...您可以定期添加属性:

data.foo = "bar";
data.stuff = {nifty: "stuff"};

或许data是一个数组:

var data = [];

...你要添加东西:

data.push({nifty: "stuff"});

然后,当你准备发送它时:

function add() {
    $.ajax({
    url: "<%=savePortlet%>" ,
    dataType: "text",
    data: {
        name : JSON.stringify(data)
    },
    success: function(data) {
            alert('returned!!');
    });
}

因为您将对象传递给ajax,所以您不必担心对JSON字符串进行URL编码; jQuery会为你做的。

JSON.stringify被定义为ECMAScript5的一部分,并被许多浏览器本地支持,但当然我们中的许多人必须支持过时的浏览器版本。在这些情况下,您可以获得“JSON shim”以将JSON.stringify添加到没有它的环境中。其中一个可以从his github page的JSON创始人Douglas Crockford获得。

答案 1 :(得分:0)

如果使用jQuery,你可以使用jquery-json,一个非常方便的插件,用JavaScript和jQuery处理JSON。

用法:

var jsonString = $.toJSON(myObject);