我有两个java类
public class Abc{
private List<SomeOtherClass> someClass;
private String k;
private String m;
}
public class SomeOtherClass{
private String a;
private String b;
private String c;
}
我有一个jsp页面,我正在创建类Abc
的bean<jsp:useBean id="someId" class="Abc" scope="request" />
现在在这个jsp和一个脚本标签里面我试图创建一个json对象的javascript数组
<script>
var abc = (function(){
module._myFunction = {
"key1" :"<c:out value = '${someId.k}'/>",
"key2" :{
<c:forEach varStatus='status' items='${someId.someClass}' var ="xyz">
"subKey1":"${xyz.a}",
"subKey2":${xyz.b}
</c:forEach>
}
}
}(abc || {}))
</script>
但是这个片段引发了错误#34;意外字符串&#34;因为c:forEach循环中的代码。但是,如果我省略subkey1&amp; subKey2工作正常。我认为这是预期的。有什么办法可以创建这个json数组。 当我检查abc.key1是开发人员工具时,它给出了正确的价值。 有什么办法可以创建这个json数组并检查
abc.key2.subkey1 or abc.key2.subKey2 in developer console
答案 0 :(得分:0)
如果您的列表中有3个项目,并且您要展开代码的这一部分:
"key2" :{
<c:forEach varStatus='status' items='${someId.someClass}' var ="xyz">
"subKey1":"${xyz.a}",
"subKey2":${xyz.b}
</c:forEach>
}
看起来像是:
"key2" :{
"subKey1":"a",
"subKey2":b
"subKey1":"1",
"subKey2":2
"subKey1":"y",
"subKey2":z
}
这不是有效格式化的json数组。 (有关有效JSON数组的快速示例,请参见此处:http://www.w3schools.com/json/json_syntax.asp - 向下滚动到&#34; JSON数组&#34;)
您希望它看起来像是:
"key2" :[
{
"subKey1":"a",
"subKey2":"b"
},
{
"subKey1":"1",
"subKey2":"2"
},
{
"subKey1":"y",
"subKey2":"z"
}
]
所以你需要在每个元素周围使用大括号,如果大括号不是最后一个元素,则需要括号后的逗号,以及括号括起来的整个东西。以下是您将如何做到这一点:
"key2" : [
<c:forEach varStatus='status' items='${someId.someClass}' var ="xyz">
{
"subKey1":"${xyz.a}",
"subKey2":"${xyz.b}"
}<c:if test="${!status.last}">,</c:if>
</c:forEach>
]
注意:我没有对此进行测试,以确保我的示例没有拼写错误,所以如果您收到任何错误,请告诉我,我会告诉您如何修复它。