2010-01-13 29 views
2

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

这里是解决办法,如果有人需要它:

$(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; 
    } 

回答

1

当使用JSON库DAFF谈论你douls意味着执行以下操作:

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

如果你想创建以下格式的JSON字符串{ID:HTML,ID:HTML},你可以这样做:

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/

+0

这个库将抛出一个“堆栈空间不足”当我尝试做的Json简单ul li – epitka 2010-01-13 15:51:37

+0

我误解了如何实际使用它。你的代码有帮助。谢谢 – epitka 2010-01-13 16:15:37