Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSTL在JSP中迭代JSONArray_Java_Json_Spring_Jstl_Arrays - Fatal编程技术网

Java 使用JSTL在JSP中迭代JSONArray

Java 使用JSTL在JSP中迭代JSONArray,java,json,spring,jstl,arrays,Java,Json,Spring,Jstl,Arrays,我正在发送一个带有模型的自定义对象列表,以及一个JSP作为视图。我的自定义对象有一个名为properties的属性,它是JSONObject。此属性的值为 {"services":[{"name":"abcd"},{"name":"efgh"}]} 现在我想遍历JSONArray[{“name”:“abcd”},{“name”:“efgh”}]。下面是我正在做的循环 <c:if test="${not empty customObject.services}">

我正在发送一个带有模型的自定义对象列表,以及一个JSP作为视图。我的自定义对象有一个名为
properties
的属性,它是
JSONObject
。此属性的值为

{"services":[{"name":"abcd"},{"name":"efgh"}]}
现在我想遍历JSONArray
[{“name”:“abcd”},{“name”:“efgh”}]
。下面是我正在做的循环

<c:if test="${not empty customObject.services}">
                 <c:forEach items="${customObject.services.getJSONArray(\"services\")}" var="Service" varStatus="rowCounterCh">
                     <li>${Service.name}</li>
                  </c:forEach>
 </c:if>

那么,我应该如何迭代JSONArray呢?请帮助

对于每个标签,您的物品都需要一个基本界面。JSONArray既不是java.util.Collection也不是java.util.Iterable。因此,对于每个标记,实现都不能迭代传递到items属性中的集合

要解决此问题,您可以:

  • 使用JSP生成HTML列表视图
  • 或列表项将JSONArray转换为customObject.services.getJSONArray方法中的某个适当集合。gson实现中的JSONArray应该有方法:迭代器,因为它实现了Iterable接口。尝试在#getJSONArray(String)方法中返回一个而不是JSONArray


  • 我有这样的东西

    <c:forEach begin="0" end="${jsonArray.length() -1}" var="index">
         ${jsonArray.getJSONObject(index).getString("name")}
    </c:forEach>
    
    ${customObject.services.getJSONArray(\"services\").length()}
    

    您使用什么具体的JSONArray实现?@Taky抱歉,我不理解这一部分:(Java中存在很多JSON库。您使用什么?什么包是for joy JSONArray类?我想获得JSONArray并在scriptlet中处理它,如
    var itemStr='';
    但这给了我JSON数组作为[{";name";:";abcd";},{";name";:";efgh";}这是所有的“s”都替换为";如何避免此问题?尝试将escapeXml属性设置为false:
    ${customObject.services.getJSONArray(\"services\").length()}