我有一个包含动画列表的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