1

我有一个如下所示的 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

1 回答 1

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"  }
]

然后,您可以像处理 Mustache 中的任何其他哈希数组一样处理该数据结构:

{{#for_mustache}}
    <div>
        <h1>{{k}}</h1>
        <p>{{v}}</p>
    </div>
{{/for_mustache}}
于 2011-04-06T16:48:33.847 回答