繁体   English   中英

在地图中使用jquery访问嵌套的json(由gson准备)

[英]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.defaultEmailMessagetemplate.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM