在 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 字符串的迭代。
我有这个 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 字符串的迭代。