Javascript解析序列化的Groovy映射到JS文字对象

Javascript Parsing of Serialized Groovy Map to JS literal Object

本文关键字:JS 文字 对象 映射 Groovy 序列化 Javascript      更新时间:2023-09-26

从服务器呈现的字符串:

""['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"`

但是,预期的结果是一个文本对象:

即:

   {'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
}