2011-04-06 4 views
1

다음과 같은 JSON 객체가 있습니다.콧수염을 사용하여 임의의 키로 json을 렌더링하는 방법?

{ 
    "XXX":{"name":"First"}, 
    "YYY":{"name":"Second"}, 
    .... 
} 

다음과 같이 렌더링해야합니다.

<div> 
    <h1>XXX</h1> 
    <p>First</p> 
</div> 
<div> 
    <h1>YYY</h1> 
    <p>Second</p> 
</div> 
.... 

Mustache를 사용하여 어떻게 수행합니까? 내가 직면 한 문제는 키 이름이 임의적이어서 항목을 참조하는 방법을 모른다는 것입니다.

답변

4

당신이처럼 보이는 뭔가를 줄 것이다 당신의 마음에 드는 JSON 파서를 사용하여 해시에 JSON 변환 :

json = { 
    "XXX" => {"name" => "First"}, 
    "YYY" => {"name" => "Second"}, 
    "ZZZ" => {"name" => "Third"} 
} 

그리고 단순히 알려진 키 작은 해시의리스트에 재 배열 :

for_mustache = json.keys.inject([ ]) do |a, k| 
    a.push({ :k => k, :v => json[k]['name']}) 
    a 
end 

위의 방법이 더 명확 할 수 있습니다. 이제 for_mustache이 같은 간단하고 정기적으로 뭔가를해야합니다 :

[ 
    { :k => "XXX", :v => "First" }, 
    { :k => "YYY", :v => "Second" }, 
    { :k => "ZZZ", :v => "Third" } 
] 

그런 다음 당신은 그냥 콧수염의 해시의 다른 배열과 같은 데이터 구조를 처리 할 수 ​​

{{#for_mustache}} 
    <div> 
     <h1>{{k}}</h1> 
     <p>{{v}}</p> 
    </div> 
{{/for_mustache}} 
+0

하는 것은 의도하는 해시 아들? – morefromalan

+0

JS가 되려면 다음 구문을 사용하십시오. json = { XXX : { "name": "First"}, YYY : { "name": "Second"}, ZZZ : { " name ":"Third "} } – morefromalan

+0

@morefromalan : 죄송합니다. [tag : ruby] 태그를 놓쳤습니다. 여러 언어에 대한 콧수염 템플릿 엔진이 있습니다. –

관련 문제