从servlet到javascript变量获取json数组
我有一个Javaservlet,它以数组格式的javascript变量将json对象发送到jsp页面 这是我的servlet(它的一部分):从servlet到javascript变量获取json数组,javascript,java,servlets,jstl,Javascript,Java,Servlets,Jstl,我有一个Javaservlet,它以数组格式的javascript变量将json对象发送到jsp页面 这是我的servlet(它的一部分): 有人能帮我吗?您已经有了字符串: String s = jsonArray.toString(); 在会话中存储s,而不是jsonArray session.setAttribute("jsonArray", s); 并将其打印到servlet中: var USER_DAYS = ${jsonArray}; 我的测试 Java servlet(带
有人能帮我吗?您已经有了字符串:
String s = jsonArray.toString();
在会话中存储s
,而不是jsonArray
session.setAttribute("jsonArray", s);
并将其打印到servlet中:
var USER_DAYS = ${jsonArray};
我的测试 Java servlet(带有示例数据):
bingo.jsp
:
HTML结果:
渲染结果:
你可以这样写
<script>
var DAYS = '${jsonArray}';
if(DAYS.length > 0 ){
var USER_DAYS = {
id: DAYS[0].nr,
date: DAYS[0].req,
title: DAYS[0].type,
startDate: new Date(DAYS[0].startDate),
endDate: new Date(DAYS[0].endDate),
allDay: true,
className: 'done'
};
}
</script>
变量天数=“${jsonArray}”;
如果(天数长度>0){
变量用户天数={
id:天[0].nr,
日期:天[0]。请求,
标题:天[0]。键入,
startDate:新日期(天[0]。startDate),
endDate:新日期(天[0]。endDate),
全天:没错,
类名:“完成”
};
}
您可以将jsonString
解析为javascriptJSON
对象。然后,您想更改json
对象的一些对象键,再删除一个额外的键[例如“Dep”:“2017-04-19”]
,最后在最终的json对象中添加两个带值的键
allDay: true,
className: 'done'
以下是解决方案。将数据设置为json字符串
session.setAttribute("jsonArray",jsonArray.toString());
在jsp中
var USER_DAYS = JSON.parse('${jsonArray}');
这将生成一个名为USER\u DAYS
的JSON
对象。
最后修改JSON对象
var USER_DAYS=JSON.parse('[{“endDate”:“2017-04-22”,“req”:“2017-04-19”,“nr”:2,“type”:“CO”,“startDate”:“2017-04-20”,“Dep”:“2017-04-19”},{“endDate”:“2017-04-22”,“req”:“2017-04-20”,“nr”:3,“type”:“CM”,“startDate”:“2017-04-20”,“Dep”:“2017-04-19”});
log('Original JSON='+JSON.stringify(USER_DAYS));
用户日forEach(函数(e){
e、 id=e.nr;
删除e.nr;
e、 日期=e.req;
删除e.req;
e、 title=e.type;
删除e.type;
e、 全天=真;
e、 className='done';
删除e.Dep;
});
log('Modified JSON='+JSON.stringify(USER_DAYS))代码>只需在javascript中尝试。不需要任何JSP标记。我们可以直接将模型属性分配到js变量中。var USER_DAYS='${jsonArray}';为什么不在会话中保存s
,然后打印出来呢?它已经是JSON对象的正确字符串表示形式,不需要使用var USER_DAYS=JSON.parse('${jsonArray}')创建循环和编写损坏的JSONTry代码>嘿,看看我的答案,让我知道它是否有效。我认为在你将USER_DAYS
视为json对象之前,你应该先解析它,不是吗?@AtaurRahmanMunna不,因为它一经打印就不会是字符串。它将不会打印为字符串。它将被打印为var USER_DAYS={[…]}
你能给我一把小提琴吗?@AtaurRahmanMunna不,恐怕也没有支持JSTL的servlet的在线小提琴工具。您可以自己尝试。@AtaurRahmanMunna这没有java部分,它是向您展示不需要解析的必要部分。
allDay: true,
className: 'done'
session.setAttribute("jsonArray",jsonArray.toString());
var USER_DAYS = JSON.parse('${jsonArray}');