2

我正在尝试从每个循环中创建一个 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"
    }
}
}

这是如何完成的,我做错了什么?

4

2 回答 2

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 });
于 2013-05-23T14:58:17.467 回答
0

如果需要在variable valueaskey中使用JSON,则需要添加到JSONwith中,json[variable]而不是在{}like中使用{variable:value}。因为{variable:value}is 等于{"variable":value}not {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);
于 2013-05-23T15:03:37.050 回答