[英]accessing nested json (prepared by gson) using jquery inside a map
我有一个像这样的java对象,它具有几个对象字段,其中包含基本字段,这是一个示例:
Template {
String name;
EmailMessage defaultEmailMessage;
}
EmailMessage {
String emailSubject;
String emailBody;
}
我有一个spring控制器方法,该方法使用gson返回json格式的模板列表。
在我的jsp中,我使用jquery ajax调用来获取此列表,然后基于该列表填充一些html内容,这是一个简化的版本:
$.ajax({
type : "GET",
url : '<c:url value="/listTemplates.htm"/>',
dataType: 'json',
success : function(templates) {
var map = $.map(templates, function(template) {
return {
"name": template.name,
"emailSubject": template.defaultEmailMessage.emailSubject
};});
$("#thumbnails-ul").html($("#campaignThumbTmpl").tmpl(map));
},
error : function(data) {
alert(data.responseText);
}
});
在firebug中,我看到一个undefined template.defaultEmailMessage
错误,但是在调试时,我可以同时撤消template.defaultEmailMessage
和template.defaultEmailMessage.emailSubject
。 我尝试使用$.each
但同样的问题。 如何访问嵌套的json? 如果您想在浏览器中查看json的完整输出,请告诉我。
用"emailSubject": template.defaultEmailMessage.emailSubject
替换您的"emailSubject": template.defaultEmailMessage.emailSubject
"emailSubject": template.defaultEmailMessage
稍后添加:为什么要再次将数据转换为json? 您要求将数据作为json,然后再次将json数据返回到模板中进行编译,然后将数据直接放入模板中。
$.ajax({
type:"GET",
url:"<c:url value="/listTemplates.htm"/>",
datatype:"application/json",
success:function(templates){
$.get("Put Your Template URL HERE",function(template}
var result = _.template(template); $("#thumbnails-ul").html($("#campaignThumbTmpl").tmpl(templates));
});
}
});
这样,您就可以通过.each
循环访问数据,将数据放置在模板中的任何位置,如下所示:
<% _.each(data,function(anynamehere){ %>
<li><a href="<%= anynamehere.name %>"></li>
<% }); %>
上面是一个从类中打印您的名字的示例,但是通过其他.each循环,您也可以放置其他属性....希望这可以帮助...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.