在 gsp 中解析一个 JSON 数组

Parse a JSON Array in gsp

我有这个 JSON 数组,例如:filesList 我从我的 groovy 控制器收到:

[{"filenameAndPath":"a","description":"bb"},    {"filenameAndPath":"c","description":"d"},{"filenameAndPath":"e","description":"f"}]

在我的 gsp 中,我想将其呈现为这样的格式:

Filename and Path 
a
Description
bb
Filename and Path 
c
Description
d
Filename and Path 
e
Description
f

我如何将 JSON 解析为 gsp 页面中的此类标签和字段?

首先使用 grails.converters.JSON.parse(jsonString) 方法在控制器中解析 JSON 字符串,然后将生成的对象传递到您的视图中,并使用 g:each 标记遍历数组和对象。

当遍历 objects/map 个条目时(就像在您的 {"filenameAndPath":"a","description":"bb"} 示例中一样),您可以使用漂亮的 shorthand 语法:<g:each in="${map}" var="key, value">..</g:each>

剩下的普通HTML就够了

要解析一个 json 字符串,它由上面的 Gregor 定义。唯一需要注意的是字符串中的 json null 需要转换为真正的 null。

这是一个将 json 字符串转换为映射的函数

Map parseJSONSelection(String jsonString) {
       def u=[]
       def m=[:]
       if (userSelection) {
           def item=JSON.parse(userSelection)
           item?.each {JSONObject  i->
               // when an element could be null set it to real null
               if (JSONObject.NULL.equals(i.field)) {
                   i.field=null
               }
               u << i
           }
           m.allfilesAndPaths=item?.collect{it.filenameAndPath}
           m.results=u
       }
       return m
   }

现在在返回的地图中,它将包含 map.results,这将是您传递给 gsp 的 json 字符串的迭代。