簡體   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