从服务器呈现的字符串:
""['opened':[111, 211, 311, 411, 1013, 1113, 1219], 'closed':[]]""
应用 JSON.parse
后,我们得到:
"['opened':[111, 211, 311, 411, 1113, 1219], 'closed':[]]"
//means : omit the double `"` , from `""something""` to `"something"`
但是,预期的结果是一个 Literal 对象:
即:
{'opener': [111, 211, 311, 411, 1113, 1219], 'closed':[] }
如何达到这个结果?我的意思是来自序列化 Groovy Map 的 Javascript 文字对象
更多详细信息:服务器端:
@MessageMapping("/project")
@SendTo("/topic/project")
protected String project(String parameter) {
def map = ['opened':[111, 211, 311, 411, 1013, 1113, 1219], 'closed':[]]
return map.inspect()
}
最佳答案
如果您将 Groovy 映射作为 JSON 而不是字符串返回,您可以让您的生活变得更简单,例如
def myAction() {
def map = ['opened':[111, 211, 311, 411, 1013, 1113, 1219], 'closed':[]]
def json = map as JSON
[result: json, contentType: 'application/json']
}
然后您可以在客户端读取 JavaScript 对象,例如
var someObject = ${result};
如果您的操作是通过 AJAX 调用的,您应该改用以下操作:
def myAction() {
def map = ['opened':[111, 211, 311, 411, 1013, 1113, 1219], 'closed':[]]
render map as JSON
}
关于序列化 Groovy 映射到 JS 文字对象的 Javascript 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182121/