我有一個包含動畫列表的Ann類。動漫包含屬性ID,名稱和信息列表。將複雜Java對象映射到Json數組
安
package entities;
import javax.xml.bind.annotation.*;
import java.util.*;
import javax.ejb.Stateless;
@Stateless
@XmlRootElement(name = "ann")
public class Ann {
private List<Anime> Ann = new ArrayList<Anime>();
@XmlElement(name="anime")
public List<Anime> getAnn() {
return Ann;
}
public void setAnn(List<Anime> Ann) {
this.Ann = Ann;
}
public Ann() {
super();
}}
我想利用安(動畫對象列表),並將其解析爲JSON來通過GSON被髮送到AJAX使得各個元件可以最終用於/由JavaScript上顯示我的jsp網頁。
我得到它的工作在一定程度上有:
private void returnResults(HttpServletResponse response, String searchQuery) throws IOException{
Map <String, String> map = new HashMap<String, String>();
try{
for (Anime anime : annj.Unmarshalling(searchQuery).getAnn()) {
map.put("name", anime.getName());
map.put("id", anime.getId());
for (Info temp : anime.getAnime()) {
if (temp.getSrc() != null) {
map.put("url", temp.getSrc());
}
}
response.getWriter().write(new Gson().toJson(map));
}
}catch(Exception e){}
我將數據發送到:
$(document).ready(function(){
$('#searchForm').submit(function(){
$.ajax({
url: 'search',
type: 'POST',
dataType: 'text',
data: $('#searchForm').serialize(),
success: function(data){
// if(data.isValid){
// alert("hi");
$('#displaySearchResults').html("Results:" + data);
// $('#displaySearchResults').slideDown(500);
// }
// else{
// alert('Enter a valid search term.');
// }
}
});
return false;
});
});
這將產生:
Results:{"name":"Neon Genesis Evangelion: The End of Evangelion","id":"419","url":"http://cdn.animenewsnetwork.com/thumbnails/fit200x200/encyc/A419-28.jpg"}{"name":"Neon Genesis Evangelion: Death \u0026 Rebirth","id":"418","url":"http://cdn.animenewsnetwork.com/thumbnails/fit200x200/encyc/A418-12.jpg"}{"name":"Neon Genesis Evangelion","id":"49","url":"http://cdn.animenewsnetwork.com/thumbnails/fit200x200/encyc/A49-16.jpg"}
這是偉大的,但它不是」 t是否適當的JSON格式?每個條目之間不應該有逗號?
我這樣做是因爲我讀了你需要你的數據是JSON格式才能在使用javascript/jquery的網頁上顯示它。
最終我希望能夠採取這種搜索結果數據和顯示給用戶與圖片格式的jQuery風格可操作列表。
我的問題是,你能幫我弄清楚如何將數據格式化爲單個正確的JSON字符串嗎?
我花了最後一個小時尋找到加入我的安類toString()方法來嘗試恢復它的屬性,而不是直接訪問各個動漫屬性,像這樣
安類
// @Override
// public String toString(){
//
// String masterList = "";
//
// for (Anime ann : this.Ann){
//
// masterList = masterList + ann.getName();
//
// }
// return masterList;
// }
Servlet的方法
// try{
// String ann1 = annj.Unmarshalling(searchQuery).getAnn().toString();
//
// map.put("hi", ann1);
//
// response.getWriter().write(new Gson().toJson(map));
//
// }catch(Exception e){}
這似乎並沒有能夠正確地訪問對象的數據,我放棄它,因爲我可以走這小巷永遠和它可能是不必要的。 (在第二個想法看起來相當不錯)但我不知道)
謝謝你的閱讀。
「信息」有相同的「遞歸」問題,但你是對的 – sodik
你是一個絕對的超級明星。非常感謝。讓我的頭部繞過這個映射的東西是不可能的,特別是當我以爲我應該用toString()和像Map
不要擔心會繼續進行下去,我將花費接下來的10個小時來查看該教程以使我的前端工作:)我將弄清楚如何接受答案...... – user3474126