从servlet到javascript变量获取json数组

从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(带

我有一个Javaservlet,它以数组格式的javascript变量将json对象发送到jsp页面

这是我的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
解析为javascript
JSON
对象。然后,您想更改
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}');