2013-05-23 3 views
2

Я пытаюсь создать дерево JSON из каждого цикла, который получает информацию от нескольких идентификаторов на странице. Учтите, что каждый идентификатор имеет имена, как «textHolder1, textHolder2» и т.д.Создайте JSON правильно из каждого цикла

$('[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

Вам необходимо создать объект, а затем 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 }); 
+0

Thanks Brandon! Прекрасно работает! – Kim

+1

@Kim, если он работает для вас, вы можете отметить его как ответ на вопрос. –

+0

Сделано и сделано! :) – Kim

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); 
Смежные вопросы