2013-05-23 5 views
2

각 루프에서 JSON 트리를 만들어 페이지의 여러 ID에서 정보를 얻으려고합니다.각 루프에서 올바른 JSON 만들기

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

이 작업이 어떻게, 그리고 내가 뭘 :

$('[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에서이 출력을 얻기 위해 노력하고있어 각 ID 등 "textHolder1, textHolder2"와 같은 이름을 가지고 고려 잘못된?

답변

4

개체를 빌드 한 다음 JSON.stringify 최종 개체를 만들어야합니다. 이 JSONvariable valuekey로서 사용하는 데 필요한 경우

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

감사합니다. Brandon! 위대한 작품! – Kim

+1

@Kim, 그것이 효과가 있다면 질문의 답으로 표시 할 수 있습니다. –

+0

완료하고 완료했습니다! :) – Kim

0

, {variable:value} 같이 {}에서 사용하는 대신에 json[variable]JSON으로 첨가 할 필요가있다. {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);