从每个循环创建正确的JSON

时间:2013-05-23 14:53:13

标签: jquery json each

我试图从每个循环中创建一个JSON树,从页面上的几个id获取信息。考虑每个id的名称类似于" textHolder1,textHolder2"等

$('[id^="textHolder"]').each(function(){
TextElementID = this.id;
TextElementContent = $(this).text();
TextElementClass = $(this).attr('class');
TextElementStyle = $(this).attr('style');

json =  JSON.stringify({textElements:{TextElementID:{textContent:TextElementContent,textClass:TextElementClass, textStyle: TextElementStyle}}}, null, 4);
});

alert(json)

我试图用JSON获取此输出:

{
"textElements": {
    "textHolder1": {
        "textContent": "The content",
        "textClass": "theclass",
        "textStyle": "some-styles"
    }
   "textHolder2": {
        "textContent": "The content1",
        "textClass": "theclass2",
        "textStyle": "some-styles2"
    }
}
}

这是怎么做的,我做错了什么?

2 个答案:

答案 0 :(得分:4)

您需要构建一个对象,然后JSON.stringify最终对象。

var t = {};
$('[id^="textHolder"]').each(function(){
    var $this = $(this);
    t[this.id] = {
        textContent: $this.text(),
        textClass: $this.attr('class'),
        textStyle: $this.attr('style')
    };
});

json = JSON.stringify({textElements: t });

答案 1 :(得分:0)

如果需要在variable value中使用key作为JSON,则需要将JSON添加到json[variable]而不是使用{}{variable:value}{variable:value}。因为{"variable":value}等于{variableValue:value}而不是json={textElements:{}} //TextElementID is your variable and it should be used as a key like that json.textElements[TextElementID]={textContent:TextElementContent,textClass:TextElementClass, textStyle: TextElementStyle} stringifiedJson = JSON.stringify(json);

所以你需要定义它;

{{1}}