jquery - 如何从 div id 创建 json 对象或数组?

标签 jquery json each attr

我遇到了一种情况,我需要根据页面上的某些 id 创建一些 json。

这是一些代码。还有jsfiddle

<ul class="wall_message">
    <li id="167" class="msgid">
        <div class="wall_msg">text</div>
        <div id="129" class="comments">
            <div class="wall_img">commemt</div>
        </div>
        <div id="130" class="comments">
            <div class="wall_img">commemt</div>
        </div>
    </li>
    <li id="166" class="msgid">
        <div class="wall_img">text</div>
        <div class="wall_msg">
            <div id="134" class="comments">
                <div class="wall_img">commemt</div>
            </div>
            <div id="136" class="comments">
                <div class="wall_img">commemt</div>
            </div>
        </div>
    </li>
</ul>​

var jsonObj = []
var jsonObj1 = [];

$('.msgid').each(function(index,val){
    jsonObj.push({ids : $(this).attr('id')});
});

$('.comments').each(function(index,element){
    jsonObj1.push({id : $(this).attr('id')});
});

console.log(jsonObj);
console.log(jsonObj1);

这将为 jsonObj 返回 2 个对象,为 jsonObj1 返回 4 个对象

我需要以某种方式将它们组合起来,以便结果是:

ids: "167"
comment: {
    id: "129"
    id: "130"
}

ids: "166"
comment: {
    id: "134"
    id: "136"
}

我认为我需要在第一个 foreach 中执行另一个 foreach 并将其他 id 添加到 json,但是,我不知道该怎么做。

有什么想法吗?

最佳答案

AndreasAL 答案的更简洁的变体:

var jsonObj = $(".msgid").map(function() {
    var obj = { id: this.id };

    obj.comments = $(".comments", this).map(function() {
        return { id: this.id };
    }).get();

    return obj;
}).get();

关于jquery - 如何从 div id 创建 json 对象或数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812927/

相关文章:

javascript - 我如何使用 javascript 或 jquery 向我的表单动态添加元素?

php - 如何将json带来的id从ajax发送到php帖子

javascript - 使用来自延迟的 JSON 请求的方法和类创建 Javascript 对象

javascript - 记忆一下 DOM 中的 Jquery

mysql - mysqli 中 json 的语法

javascript - 重新加载后相同的功能没有给出相同的结果

mysql - 结合 JSON_SEARCH 和 JSON_EXTRACT 得到 : "Invalid JSON path expression."

C++:如何使用 boost::property_tree 创建一个数组?

javascript - 如何在 JS 中迭代哈希并返回所有匹配结果?

ruby-on-rails - 在 View Rails 中计数