如何在 grails 会话对象中对 json 进行操作

How to operate on json in grails session object

我想在会话对象中存储一个 json 对象 session.setAttribute("myjson",myjson)

我的json 的结构如下:

{ 'name':'john', age: 23}
{ 'name':'doe', age: 44}
..etc

我该怎么做以及如何稍后从 session.getAttribute('myjson') 中检索该对象并附加一个新值 {}

有很多方法可以做到这一点,但老实说,你需要问问自己"Is this really the right thing to do?"。为什么?因为在会话中存储任何东西应该是最后的手段,并且在必要时应该保持在最低限度。在任何 HTTP 环境中使用会话 会降低 性能并使您的应用程序更难以水平扩展。

牢记这一点,您始终可以使用 org.codehaus.groovy.grails.web.json.JSONObjects 和 grails.converters.JSON 转换器来完成此操作。不过,使用 ListMap 可能更容易。

只是给出示例代码:
您可以使用评论中提到的地图列表。

List<Map<String,Integer>> listInSesion = [] 
listInSession.add([ 'name':'john', age: 23])
listInSession.add([ 'name':'doe', age: 44])
.
.

session.setAttribute('listInSession',listInSession)

如果您从 HTTP 请求中获取 JSON,您可以简单地说:

listInSession = request.JSON

要获取列表并添加新列表:

listInSession = session.getAttribute('listInSession')
listInSession?.add([ 'name':'john', age: 23])
session.setAttribute('listInSession',listInSession)