2015-01-27 2 views
0

Строки оказанного с сервера:

""['opened':[111, 211, 311, 411, 1013, 1113, 1219], 'closed':[]]"" 

после применения JSON.parse, мы получим:Javascript Разбор Сериализированного Groovy Карты для JS буквального объекта

"['opened':[111, 211, 311, 411, 1113, 1219], 'closed':[]]" 
    //means : omit the double `"` , from `""something""` to `"something"` 

Однако ожидаемый результат является Буквальным объектом:

например:

{'opener': [111, 211, 311, 411, 1113, 1219], 'closed':[] } 

Как достичь этого результата? я имею в виду буквальный объекта Javascript из сериализовать Groovy Карта


Подробнее: серверный:

@MessageMapping("/project") 
@SendTo("/topic/project") 
protected String project(String parameter) { 
     def map = ['opened':[111, 211, 311, 411, 1013, 1113, 1219], 'closed':[]] 
    return map.inspect() 

} 
+0

Это не похоже на то, что JSON в первую очередь. Я не могу разобрать строку сервера с помощью консоли. 'Неожиданный токен:' – jasonscript

ответ

2

Вы могли бы сделать вашу жизнь намного проще, если вы вернете 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 
} 
+0

проблема, с которой мы используем Spring-websocket, а не встроенное действие. См. Обновление. –

Смежные вопросы