无法相信这已经证明是如此困难。
我有以下JSON:
{" 1440071374-Bane breathing.jpg":{" filename":" 1440071374-Bane 呼吸。#"," alt":"这是祸害","主要":true,"标题":&#34 ;这是 Banecat,Batcat的最大敌人"}}
我已将其转换为具有以下下划线语法的对象:
_.each(results, function(r) { var obj = JSON.parse(r.images)
伪我想做的事情如下:
if primary exists and is true {
var img = filename
我认为这只是obj [0] .filename的一个显而易见的工作,但显然不是,而且我已经暂时停留了一段时间。
非常感谢任何帮助。
周末之后我又回到了这个问题,我注意到JSON没有被视为对象:
<%
_.each(results, function(r) {
var a = r.images;
_.isObject(a); // strangely now resulting in false????
_.isString(a); // true
当我使用下划线语法<%= r.images %>
将JSON回显到页面上时,我将json粘贴在此问题的顶部。也许是因为结果来自请求需要先解析?
答案 0 :(得分:2)
您的JSON已经是一个对象(字典)。您需要做的只是迭代并验证primary
是否为true
,如果是,请将filename
值分配给var img
var a = {"1440071374-Bane breathing.jpg":{"filename":"1440071374-Bane breathing.jpg","alt":"This is bane","primary":true,"caption":"This is Banecat, the worst enemy of Batcat"}};
for (items in a) {
if (a[items]['primary'] == true) {
var img = a[items]['filename'];
alert(img); // <-- will display 1440071374-Bane breathing.jpg in this example
}
}
JSFiddle中的相同代码。玩弄不同的价值观。
为什么不动态添加src
?添加以下代码,它应该工作。确保您的<img>
元素具有唯一ID
document.getElementById('imgId').src = "example.com/" + img;
我也在上面编写了同样的代码。