我正在尝试在 JSP 中显示对象列表。 由于 GSON,该列表是从 Java 数组到 Javascript 数组的转换。 算法是:
- 在 servlet 中加载对象数组列表
- 使用 GSON 转换为 JSON 对象
- 将 JSON 对象转发给 JSP
- 在 Javascript 数组中加载 JSON 对象
- 将 Javascript 数组显示为 HTML
问题是当我循环 JS 数组时,它无法将 JS 数组的元素识别为对象:
问题是当我循环 JS 数组并打印它的元素时,我得到了第一个图像的字符! 这意味着 GSON 不会将数组转换为对象,而是转换为字符串数组。
如何确保 GSON 确实将 JAVA 对象数组转换为 JS 对象数组?
我的类(class)“Activite”:
public class Activite {
private int id;
private String description;
}
Servlet 端:
ArrayList<Activite> listActivite = new ArrayList<Activite>();
// ... Fill array from database ...
String jsonActivite = new Gson().toJson(listActivite);
request.setAttribute( "listActivite", listActivite );
requestDispatcher.include(request, response);
JSP 端:
<!-- Load Array List -->
<script>
var listActivite = <%= new Gson().fromJson((String)request.getAttribute("jsonActivite"))%>;
</script>
<p id="demo"><p>
<!-- Print the Array List's objects in the paragraph <p> -->
<script>
var p = document.getElementById("demo");
document.getElementById("demo").innerHTML+=listActivite+"</br></br>";
for(i=0; i<listActivite.length; i++){
p.innerHTML += 'ID:'+listActivite[i].id+' DESC:'+listActivite[i].description+'</br>';
}
</script>
最佳答案
正如问题评论中的用户 Pointy 所说,答案是不解析 JSP 中的请求属性。
var listActivite = <%= request.getAttribute("jsonActivite")%>;
listActivite 现在是一个普通的 JS 对象数组。
谢谢尖头。
关于javascript - 为什么 GSON 将对象数组转换为字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29827099/