como desarrollador tcl que comienza con groovy, estoy un poco sorprendido con la lista y el soporte de mapas en groovy. Tal vez me estoy perdiendo algo aquí.Groovy: ¿no hay un stringToMap listo para usar?
Estoy acostumbrado a convertir entre cadenas, listas y matrices/mapas en tcl sobre la marcha. En TCL, algo así como
"['a':2,'b':4]".each {key, value -> println key + " " + value}
sería posible, mientras que en maravilloso, los pasos de cada comando a través de cada carácter de la cadena.
Esto sería un gran problema si pudiera usar algo como el comando dividir o tokenizar, pero como una lista serializada o un mapa no es solo "a: 2, b: 4", es un poco más difícil de analizar.
Parece que los desarrolladores de griffon usan una biblioteca de stringToMap (http://code.google.com/p/stringtomap/) pero el ejemplo tampoco puede hacer frente a los mapas serializados.
Así que mi pregunta es ahora: ¿cuál es la mejor manera de analizar un mapa o una lista en groovy?
Saludos, Ralf
PS: se trata de una cuestión maravilloso, pero he marcado con griales, porque necesito esta funcionalidad para griales donde me gustaría transmitir mapas a través de la URL
actualización: Esto sigue siendo una pregunta abierta para mí ... así que aquí están algunas versiones de aquellos que tienen el mismo problema:
- cuando se enciende un mapa en una cadena, un
.toString()
se re sult en algo que no se puede volver a convertir en un mapa en todos los casos, pero un.inspect()
le dará una cadena que se puede evaluar de nuevo a un mapa! - en Grails, hay una
.encodeAsJSON()
yJSON.parse(String)
- ambos funcionan muy bien, pero no ha obtenido todavía Lo que el intérprete hará con funciones JSON (posible problema de seguridad)
Si está utilizando grails y quiere un mapa, miraría POSTING un mensaje JSON.Probablemente sea más fácil de generar en el lado del cliente y hay cosas integradas en Grails para evaluar JSON. –
thanx. ¡Json podría ser una muy buena alternativa! – rdmueller
Pasar los mapas a través de la URL en Grails suena como un trabajo para mapeos de URL. Consulte la sección Variables incrustadas de la guía del usuario de Grails (sección 6.4.2). Puede definir una estructura de URL personalizada para pasar el mapa que desee, es decir, http://myapp.com/controller/action/key1/value1/key2/value2 No funcionará demasiado bien para mapas multidimensionales , o enormes estructuras de datos, pero yo diría que no deberían pasarse a través de las URL de todos modos. –