我从api
中提取下面的JSON{
"totalResults":1,
"items":[
{
"body":"here is the body",
"excerpt":"here is the exceprt",
"title":"article title",
"customFields":[
{
"basename":"image_title",
"value":""
},
{
"basename":"image_tag",
"value":""
},
{
"basename":"image_text",
"value":""
},
{
"basename":"image_01",
value: "<form mt:asset-id="428270" class="enclosure enclosure-image" style="display: inline;"><a href="http://mywebsite.com/news/images/2015/06/image.jpg">image.jpg</a></form>"
},
{
"basename":"image_01_cap",
"value":"some text for the captions"
}
]
}
]
}
我是小胡子的新手。我要解析的数据不是对象数组,而是具有数组值的对象。
到目前为止,我得到了这个,但没有输出。我也想从值中提取img url。我使用的是最新版本的Mustache.js 2.1.2
{{#items}}
{{#customFields}}
{{#basename.image_01}}
<img src="{{value}}">
{{/basename.image_01}}
{{/customFields}}
{{/items}}
我希望OUTPUT为:<img src="http://mywebsite.com/news/images/2015/06/image.jpg">
答案 0 :(得分:0)
您正在尝试在模板引擎中使用逻辑。 Mustache旨在不允许这种行为。
此外,image_01是basename的值,而不是属性。您无法使用点表示法达到值,即obj.property。
最佳解决方案是在将json传递给小胡子之前,进一步由服务器或客户端处理json。
答案 1 :(得分:0)
假设您已收到$ .ajax会话的请求。 with .done(function(data} { .... })
如果正确解析了代码应该是这样的。到目前为止,我看到JSON没有正确格式化
{
"basename":"image_01",
value: "<form mt:asset-id="428270" class="enclosure enclosure-image" style="display: inline;"><a href="http://mywebsite.com/news/images/2015/06/image.jpg">image.jpg</a></form>"
},
通常当你有一个key =&gt;值链时,应该引用“key”和“value”:
{ "myval":"true"}
在您的情况下,值的格式不正确:
在你的html上使用URLEncode
{
"basename":"image_01",
"value": "%3Cform+mt%3Aasset-id%3D%22428270%22+class%3D%22enclosure+enclosure-image%22+style%3D%22display%3A+inline%3B%22%3E%3Ca+href%3D%22http%3A%2F%2Fmywebsite.com%2Fnews%2Fimages%2F2015%2F06%2Fimage.jpg%22%3Eimage.jpg%3C%2Fa%3E%3C%2Fform%3E"
},
在html值上使用转义引用:
{
"basename":"image_01",
"value": "<form mt:asset-id=\"428270\" class=\"enclosure enclosure-image\" style=\"display: inline;\"><a href=\"http://mywebsite.com/news/images/2015/06/image.jpg\">image.jpg</a></form>"
},
现在,鉴于此,您可以将url_decode值稍后评估为DOM对象并提取图像的url,或者使用转义引号部分的html ...此时此过程非常类似。你必须创建一个不可见的对象并提取数据:如果你想要它作为$ .ajax请求的结果,你可以获得你的网址:
.done(function(data){
var myhtml = data.items[0].customFields[3].value;
$("<div id='myfakecontainer'></div>").appendTo("body");
$("#myfakecontainer").hide();
$(myhtml).appendTo("#myfakecontainer");
var mylink = $("#myfakecontainer").find("a");
console.log($(mylink).attr("href"));
$("#myfakecontainer").remove();
}
这样,您必须在模板中获得图像的价值。