首页 > 解决方案 > jstl如何获取每个元素的json字符串

问题描述

我有以下 json 字符串

[{"nombre":"Estadias Taller serieLoc. 251","array":[{"valores":

[{"nombre":"LUGO DE LLANERA","valor":1.89}],"ejeX":"IB1"},{"valores":[{"nombre":"LUGO DE LLANERA","valor":3.32}],"ejeX":"IB2"},{"valores":[{"nombre":"BARCELONA CAN TUNIS","valor":2.29},{"nombre":"LUGO DE LLANERA","valor":1.41},{"nombre":"TARRAGONA","valor":3.51}],"ejeX":"IS"}]},
{"nombre":"Estadias Taller serieLoc. 252 Merc","array":[{"valores":[{"nombre":"BARCELONA CAN TUNIS","valor":2.31}],"ejeX":"ES1"}]}]

这个 json 字符串有两个元素。第一个是

 [{"nombre":"Estadias Taller serieLoc. 251","array":[{"valores":[{"nombre":"LUGO DE LLANERA","valor":1.89}],"ejeX":"IB1"},{"valores":[{"nombre":"LUGO DE LLANERA","valor":3.32}],"ejeX":"IB2"},{"valores":[{"nombre":"BARCELONA CAN TUNIS","valor":2.29},{"nombre":"LUGO DE LLANERA","valor":1.41},{"nombre":"TARRAGONA","valor":3.51}],"ejeX":"IS"}]}

第二个是

{"nombre":"Estadias Taller serieLoc. 252 Merc","array":[{"valores":[{"nombre":"BARCELONA CAN TUNIS","valor":2.31}],"ejeX":"ES1"}]}]

我想使用 jstl 获取这两个元素

我有以下每个

<c:forEach items="${vgraficas}" var="grafica"  >
        <p> grafica xxxx <c:out value="${grafica}" /></p>

</c:forEach>

但是这个循环获取字符串中的每个元素,而不仅仅是两个

grafica xxxx [{"nombre":"Estadias Taller serieLoc. 251"

grafica xxxx "array":[{"valores":[{"nombre":"LUGO DE LLANERA"

grafica xxxx "valor":1.89}]

grafica xxxx "ejeX":"IB1"}

grafica xxxx {"valores":[{"nombre":"LUGO DE LLANERA"

grafica xxxx "valor":3.32}]

grafica xxxx "ejeX":"IB2"}

grafica xxxx {"valores":[{"nombre":"BARCELONA CAN TUNIS"

grafica xxxx "valor":2.29}

grafica xxxx {"nombre":"LUGO DE LLANERA"

grafica xxxx "valor":1.41}

grafica xxxx {"nombre":"TARRAGONA"

grafica xxxx "valor":3.51}]

grafica xxxx "ejeX":"IS"}]}

grafica xxxx {"nombre":"Estadias Taller serieLoc. 252 Merc"

grafica xxxx "array":[{"valores":[{"nombre":"BARCELONA CAN TUNIS"

grafica xxxx "valor":2.31}]

grafica xxxx "ejeX":"ES1"}]}]

我怎样才能得到这个 json 数组的两个元素?

标签: jsonjstl

解决方案


假设java中vgraficas值的类型是String。

  1. 使用 JavaScript 函数 JSON.parse() 将 String 转换为 JavaScript 对象。假设它是obj。
  2. 现在这个 obj 基本上是对象数组。所以外层 List 将保存 Object 数组(即 Object[]),该数组需要再次迭代以逐个获取每个对象元素。
<c:forEach items="${obj}" var="outerVar"> 
      <c:forEach items="${outerVar}" var="innerVar"> // outerVar will hold your object array
         <c:out value="${innerVar}" /> // iterating the object array 
      </c:forEach>
  </c:forEach>

推荐阅读