jQuery: сериализация иерархической структуры в Json - PullRequest
2 голосов
/ 13 января 2010

Допустим, у меня есть вложенный неупорядоченный список, который я хотел бы сериализовать в 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 ]

1 голос
/ 13 января 2010

При использовании библиотеки JSON, о которой Дафф говорил о вас, двойники подразумевают следующее:

$.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);

(для справки, это библиотека JSON, упомянутая Daff: http://code.google.com/p/jquery-json/)

1 голос
/ 13 января 2010

jQuery не имеет встроенной общедоступной поддержки сериализации JSON (пока). Наилучшим подходом было бы использовать одну из библиотек JavaScript, перечисленных в JSON.org . Также в Google Code есть проект jQuery JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...