как разработчик tcl, начиная с groovy, я немного удивлен тем, что список и поддержка карт в groovy. Может быть, я что-то упустил.Groovy: нет ли строки из списка?
Я использую для преобразования между строками, списками и массивами/картами в tcl на лету. В Tcl, что-то вроде
"['a':2,'b':4]".each {key, value -> println key + " " + value}
было бы возможно, где, как в заводных шагах каждой команды через каждый символ строки.
Это была бы большая проблема, я мог бы легко использовать что-то вроде команды split или tokenize, но поскольку сериализованный список или карта не просто «a: 2, b: 4», это немного сложнее разобрать.
Похоже, разработчики гриффона используют библиотеку stringToMap (http://code.google.com/p/stringtomap/), но этот пример также не может справиться с сериализованными картами.
Итак, мой вопрос: какой лучший способ разобрать карту или список в groovy?
Приветствие, Ralf
PS: это заводной вопрос, но я помечать его с Грааль, потому что мне нужна эта функциональность для Грааль, где я хотел бы передать карты через URL
Обновление: Это вопрос остается открытым для меня ... так вот некоторые обновления для тех, у кого есть такая же проблема:
- при включении карты в строка,
.toString()
будет повторно sult в чем-то, что не может быть обращено обратно на карту во всех случаях, но.inspect()
даст вам строку, которая может быть оценена обратно на карту! - в Grails, есть
.encodeAsJSON()
иJSON.parse(String)
- и отлично работают, но я не проверил еще, что анализатор будет делать с JSON функций (возможно, проблема безопасности)
Если вы используете grails и хотите получить карту, я бы посмотрел сообщение POSTing JSON.Вероятно, легче сгенерировать на стороне клиента, и для оценки JSON есть вещи, встроенные в grails. –
thanx. json действительно может быть очень хорошей альтернативой! – rdmueller
Передача карт через URL-адрес в Grails звучит как задание для сопоставлений URL-адресов. Ознакомьтесь с разделом Embedded Variables руководства пользователя Grails (раздел 6.4.2). Вы можете определить настраиваемую структуру URL для передачи любой желаемой карты, то есть http://myapp.com/controller/action/key1/value1/key2/value2 Это не будет работать слишком хорошо для многомерных карт , или огромные структуры данных, но я бы утверждать, что они не должны передаваться через URL-адреса в любом случае. –