如何从Controller将嵌套地图呈现为JSON

问题描述

This solution不适用于嵌套地图。我正在尝试转换为JSON。我需要发送此嵌套地图,因为它包含很多我需要在前端用plotly制作的图形的图形。

这是在后端的nestedMap的样子:

Map<String,Map<String,Object>> nestedMap

尽管在将其传递给控制器​​之后,在尝试渲染它之前,我仍将其声明为def nestedMap。在控制器的结尾,我尝试将render nestedMap作为JSON。

AJAX通话后收到的信息:

{"FirstSample":
{"S1":
{"avg":2.367333,"computation":-7.314434,"computedAvg":9.26567,"this$0":
{"transactionManager: 
{"class":"org.codehaus.groovy.grails.transaction.ChainedTransactionManager","transactionManagers":[
{"dataSource":
{"class":"org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy","connection": 
{"autoCommit":true,"catalog":null,"class":"...

解决方法

发生此问题的原因是,使用JSON呈现的Map包含一个对象。我将要转换为JSON的映射更改为MultiMap<String,List<String>> nestedMap,以解决前端将需要的多个值。发生这种情况后,render nestedMap as JSON可以正常工作。因此,如果在地图中没有声明为def的对象。

def nestedMap = [:]
render nestedMap as JSON