jQuery:将层次结构序列化为Json

时间:2010-01-13 14:33:42

标签: jquery json

假设我有一个嵌套的无序列表,我想序列化为json。使用jQuery的最佳方法是什么?

如果有人需要,这是解决方案:

 $(document).ready(function() {
        var root = $('#root');
        var jsonObj = {};

        jsonObj["root"] = processNode(root);
        var JSON = $.toJSON(jsonObj);

        $('body').append(JSON);
        alert(JSON);
    });

    function processNode(el) {

        if (el[0] == undefined) return jsonObj;

        var jsonObj = {};

        jsonObj["id"] = el.attr('id') || "";
        jsonObj["text"] = el.attr('text') || "";

        var children = new Array();

        el.children().each(function(idx) {
            children.push(processNode($(this)));
        });

        jsonObj["children"] = children;

        return jsonObj;
    }

2 个答案:

答案 0 :(得分:1)

jQuery没有本地可公开访问的JSON序列化支持(尚未)。最好的方法是使用JSON.org上列出的一个JavaScript库。还有jQuery JSON project on Google Code

答案 1 :(得分:1)

当使用Daff谈到你的JSON库时,你会暗示如下:

$.toJSON($("ul#someUL li"));

如果要创建以下格式{id:html,id:html}的JSON字符串,可以这样做:

var JSONobj = {};
$("ul#someUL li").each(function(){
  $t = $(this);
  JSONobj[$t.attr('id')] = $t.html();
});
var JSON = $.toJSON(JSONobj);

(为了引用,这是Daff提到的JSON库:http://code.google.com/p/jquery-json/