El 24 de abril de 2011 16:12, Nekmo <conta...@nekmo.com> escribió: > Vale, entonces, por lo que entiendo, la idea es comparar si un > diccionario es igual a otro, ¿verdad? En tal caso, habría que tener en > cuenta que el orden de los valores puede cambiar, lo cual es un > problema... :| > > Hola Nekmo.
Esta es otra de las razones por la que traduzco las cadenas JSON a objetos python y posteriormente los vuelvo a serializar: >>> import json >>> repr(json.loads('{"sota":10, "caballo":11}')) "{u'caballo': 11, u'sota': 10}" >>> repr(json.loads('{"caballo":11, "sota":10}')) "{u'caballo': 11, u'sota': 10}" Salud. > Un cordial saludo: > -- Nekmo. > > Sitio web: http://nekmo.com > Dirección de contacto: conta...@nekmo.com > XMPP/Jabber: conta...@nekmo.com > Identi.ca: http://identi.ca/nekmo > Diaspora: Nekmo > > > > El día 24 de abril de 2011 13:43, Pepe Aracil <p...@diselpro.com> > escribió: > > Hola Nekmo. > > > > Creo que me he explicado mal, la idea de usar repr() no es para parsear > JSON > > que para eso ya existe el módulo json. > > Mi intención es cachear peticiones JSON/RPC que se traducen en > diccionarios > > python en el lado del server. Para lo cual necesito que estos > diccionarios > > puedan formar parte de las keys de un diccionario que contiene los > > resultados cacheados. Para tal fin hay que transformar estos diccionarios > en > > objetos inmutables y repr() es una de las opciones, otra podria ser > Pickle. > > > > Si las cadenas json/rpc son muy largas, simpre se pueden acortar en md5: > > > > jsonObj = { "method": "echo", "params": ["Hello JSON-RPC"], "id": 1} > > result = doJsonMethod(jsonObj) > > > > hashable = md5.new(cPickle.dumps(jsonObj)).digest() > > cache[hashable] = result > > > > Salud. > > > > > > El 24 de abril de 2011 12:52, Nekmo <conta...@nekmo.com> escribió: > >> > >> Si usas repr no te va a funcionar. Python no es igual a la sintaxis de > >> Javascript (la cual es JSON). Por ejemplo, mientras que en JSON tienes > >> false, true y null, en Python tienes False, True y None, lo cual te > >> provocará a la hora de trabajar con el "pseudo JSON" bonitos errores > >> del tipo "False no está definida", además de que como tengas algo que > >> no sea un string en la key de un diccionario, a la hora de interpretar > >> el JSON también te petará (en el caso de usar el módulo JSON, te > >> petará al dumpear xD). > >> > >> Un cordial saludo: > >> -- Nekmo. > >> > >> Sitio web: http://nekmo.com > >> Dirección de contacto: conta...@nekmo.com > >> XMPP/Jabber: conta...@nekmo.com > >> Identi.ca: http://identi.ca/nekmo > >> Diaspora: Nekmo > >> > >> > >> > >> El día 23 de abril de 2011 14:24, tny <a.por...@gmail.com> escribió: > >> > El lun, 18-04-2011 a las 18:24 +0200, Pepe Aracil escribió: > >> >> Hola Lista. > >> >> > >> >> Tengo que cachear objetos JSON, es decir puedo encontrarme con listas > y > >> >> diccionarios > >> >> que son mutables y por tanto al no ser "hashables" no pueden formar > >> >> parte > >> >> de las keys > >> >> de un diccionario. > >> >> > >> >> Una idea es pasar todos los objetos mutables (diccionarios y listas) > a > >> >> inmutables (tuplas) > >> >> mediante una función recursiva. > >> >> > >> >> Ejemplo: > >> >> {"method":"foo", "params":["sota","caballo"]} --> > (("method","foo"), > >> >> (params,("sota","caballo"))) > >> >> Este sistema se me antoja algo "Gastón" en cuanto a ciclos CPU > >> >> > >> >> El otro método consiste en usar la representación en cadena del > objeto > >> >> usando repr(objeto): > >> >> repr({"method":"foo", "params":["sota","caballo"]}) -> > >> >> '{"method":"foo", > >> >> "params":["sota","caballo"]}' > >> >> > >> >> > >> >> ¿Alguna idea más al respecto? > >> >> > >> >> Gracias. > >> >> _______________________________________________ > >> >> Python-es mailing list > >> >> Python-es@python.org > >> >> http://mail.python.org/mailman/listinfo/python-es > >> >> FAQ: http://python-es-faq.wikidot.com/ > >> > > >> > Voto por repr > >> > > >> > Y mucho mejor si deribas la clase de los objetos JSON y le añades el > >> > metodo hash, de modo que te cree el hash de la representación del json > >> > > >> > > >> > _______________________________________________ > >> > Python-es mailing list > >> > Python-es@python.org > >> > http://mail.python.org/mailman/listinfo/python-es > >> > FAQ: http://python-es-faq.wikidot.com/ > >> > > >> _______________________________________________ > >> Python-es mailing list > >> Python-es@python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es@python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/