使用Mustache解析json

时间:2013-02-24 15:38:31

标签: ajax json parsing jquery mustache

我有这个JSON:

{ 
status: "ok", 
posts: [ { 
          id: 1362, 
          type: "ser", 
          slug: "av-ss-xiii-3",

           fields: { 
                     price: [ "550" ], 
                     sale: [ "rent" ] 
            } 
       } ]
}

我正在用胡子解析它,但正如你所看到的......字段不是一个对象数组,它是一个带有两个带数组值属性的对象......

{{#posts}}
<h1>{{type}}</h1>
        {{#fields}}
            <p> {{price}}:{{value}}</p>
         {{/fields}} 
{{/posts}}

我认为在解析过程中我会犯一个错误,导致它对价格值无效。

2 个答案:

答案 0 :(得分:1)

您的模板即将开始运作。我可以看到的问题是{{value}}期望字段对象中的键不存在。您的模板目前使用冒号输出价格,然后不输出任何内容:

<h1>ser</h1>
<p> 550 :</p>

也许您认为{{value}}会输出550,或者您的意思是输出销售价值。在这两种情况下,将值包装在数组中有点奇怪:[“550”]。这并不重要,因为每个元素中只有一个元素,这根本不会使您的模板复杂化。我只能猜测您想要的输出是什么,但允许我在工作示例中演示您的模板。

{{#posts}}
    <h1>{{type}}</h1>
    {{#fields}}
    <p> {{price}} : {{sale}}</p>
    {{/fields}}
{{/posts}}

这将为您的数据输出以下HTML:

<h1>ser</h1>
<p> 550 : rent</p>

这是一个jsFiddle来说明:template with multiple posts

我冒昧地编造了第二个post对象,以演示您的数据如何使用集合呈现。我还猜测你可能想要输出价格和销售价值。

我认为您已经理解了这一点,但要明确,{{#fields}} ... {{/ fields}}的工作方式与条件类似,因为字段是对象而不是数组。没关系。如果字段是假的(例如,undefined或false),则模板将不会呈现p元素。

请注意我在jsFiddle中使用了jQuery,但只是为了方便访问模板和DOM元素。

我希望有所帮助,但如果您有任何疑问请与我联系。如果这不是您想要的,请编辑您的问题以描述您想要的输出。

答案 1 :(得分:0)

最后我发现它......这是'方法'的问题,使用.toHtml它没有提供任何数组...使用.render它工作正常! 感谢