p_1: procedimiento exec srt
p_2: procedimiento json.loads json.dumps
Script:
Código: Seleccionar todo
# -*- coding: utf-8 -*-
_json_str = '{"a":{"a1":"a 1","a2":"a 2","a3":"a 3"},"b":{"b1":"b 1","b2":"b 2","b3":"b 3"},"á":"á 0"}'
def p_1(_json_str_1):
print "------------------------------------------------------------------------------"
print "Procedimiento 1 exec str"
print "------------------------------------------------------------------------------"
print "##### p_1._json_str_1 ## %s ##" % _json_str_1
exec "_json_1 = " + _json_str_1
print "##### p_1._json_1 ## %s ##" % _json_1
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
print "##### p_1._json_1['a'] ## %s ##" % _json_1['a']
print "##### p_1._json_1['a'][a2] ## %s ##" % _json_1['a']['a2']
print "##### p_1._json_1['b'] ## %s ##" % _json_1['b']
print "##### p_1._json_1['b'][b3] ## %s ##" % _json_1['b']['b3']
print "##### p_1._json_1['á'] ## %s ##" % _json_1['á']
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
_json_str_2 = str(_json_1)
print "##### p_1._json_str_2 ## %s ##" % _json_str_2
exec "_json_2 = " + _json_str_2
print "##### p_1._json_2 ## %s ##" % _json_2
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
print "##### p_1._json_2['a'] ## %s ##" % _json_2['a']
print "##### p_1._json_2['a'][a2] ## %s ##" % _json_2['a']['a2']
print "##### p_1._json_2['b'] ## %s ##" % _json_2['b']
print "##### p_1._json_2['b'][b3] ## %s ##" % _json_2['b']['b3']
print "##### p_1._json_2['á'] ## %s ##" % _json_2['á']
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
_json_str_3 = str(_json_2)
print "##### p_1._json_str_3 ## %s ##" % _json_str_3
print "------------------------------------------------------------------------------"
def p_2(_json_str_1):
print "------------------------------------------------------------------------------"
print "Procedimiento 2 json.loads json.dumps"
print "------------------------------------------------------------------------------"
print "##### p_2._json_str_1 ## %s ##" % _json_str_1
import json
_json_1 = json.loads(_json_str_1)
print "##### p_2._json_1 ## %s ##" % _json_1
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
print "##### p_2._json_1['a'] ## %s ##" % _json_1['a']
print "##### p_2._json_1['a'][a2] ## %s ##" % _json_1['a']['a2']
print "##### p_2._json_1['b'] ## %s ##" % _json_1['b']
print "##### p_2._json_1['b'][b3] ## %s ##" % _json_1['b']['b3']
print "##### p_2._json_1[u'á'].encode('utf-8') ## %s ##" % _json_1[u'á'].encode('utf-8')
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
_json_str_2 = json.dumps(_json_1)
print "##### p_2._json_str_2 ## %s ##" % _json_str_2
_json_2 = json.loads(_json_str_2)
print "##### p_2._json_2 ## %s ##" % _json_2
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
print "##### p_2._json_2['a'] ## %s ##" % _json_2['a']
print "##### p_2._json_2['a'][a2] ## %s ##" % _json_2['a']['a2']
print "##### p_2._json_2['b'] ## %s ##" % _json_2['b']
print "##### p_2._json_2['b'][b3] ## %s ##" % _json_2['b']['b3']
print "##### p_2._json_2[u'á'].encode('utf-8') ## %s ##" % _json_2[u'á'].encode('utf-8')
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
_json_str_3 = json.dumps(_json_2)
print "##### p_2._json_str_3 ## %s ##" % _json_str_3
print "------------------------------------------------------------------------------"
p_1(_json_str)
p_2(_json_str)
Código: Seleccionar todo
------------------------------------------------------------------------------
Procedimiento 1 exec str
------------------------------------------------------------------------------
##### p_1._json_str_1 ## {"a":{"a1":"a 1","a2":"a 2","a3":"a 3"},"b":{"b1":"b 1","b2":"b 2","b3":"b 3"},"á":"á 0"} ##
##### p_1._json_1 ## {'a': {'a1': 'a 1', 'a3': 'a 3', 'a2': 'a 2'}, '\xc3\xa1': '\xc3\xa1 0', 'b': {'b1': 'b 1', 'b2': 'b 2', 'b3': 'b 3'}} ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_1._json_1['a'] ## {'a1': 'a 1', 'a3': 'a 3', 'a2': 'a 2'} ##
##### p_1._json_1['a'][a2] ## a 2 ##
##### p_1._json_1['b'] ## {'b1': 'b 1', 'b2': 'b 2', 'b3': 'b 3'} ##
##### p_1._json_1['b'][b3] ## b 3 ##
##### p_1._json_1['á'] ## á 0 ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_1._json_str_2 ## {'a': {'a1': 'a 1', 'a3': 'a 3', 'a2': 'a 2'}, '\xc3\xa1': '\xc3\xa1 0', 'b': {'b1': 'b 1', 'b2': 'b 2', 'b3': 'b 3'}} ##
##### p_1._json_2 ## {'a': {'a1': 'a 1', 'a3': 'a 3', 'a2': 'a 2'}, '\xc3\xa1': '\xc3\xa1 0', 'b': {'b1': 'b 1', 'b2': 'b 2', 'b3': 'b 3'}} ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_1._json_2['a'] ## {'a1': 'a 1', 'a3': 'a 3', 'a2': 'a 2'} ##
##### p_1._json_2['a'][a2] ## a 2 ##
##### p_1._json_2['b'] ## {'b1': 'b 1', 'b2': 'b 2', 'b3': 'b 3'} ##
##### p_1._json_2['b'][b3] ## b 3 ##
##### p_1._json_2['á'] ## á 0 ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_1._json_str_3 ## {'a': {'a1': 'a 1', 'a3': 'a 3', 'a2': 'a 2'}, '\xc3\xa1': '\xc3\xa1 0', 'b': {'b1': 'b 1', 'b2': 'b 2', 'b3': 'b 3'}} ##
------------------------------------------------------------------------------
Código: Seleccionar todo
------------------------------------------------------------------------------
Procedimiento 2 json.loads json.dumps
------------------------------------------------------------------------------
##### p_2._json_str_1 ## {"a":{"a1":"a 1","a2":"a 2","a3":"a 3"},"b":{"b1":"b 1","b2":"b 2","b3":"b 3"},"á":"á 0"} ##
##### p_2._json_1 ## {u'a': {u'a1': u'a 1', u'a3': u'a 3', u'a2': u'a 2'}, u'\xe1': u'\xe1 0', u'b': {u'b1': u'b 1', u'b2': u'b 2', u'b3': u'b 3'}} ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_2._json_1['a'] ## {u'a1': u'a 1', u'a3': u'a 3', u'a2': u'a 2'} ##
##### p_2._json_1['a'][a2] ## a 2 ##
##### p_2._json_1['b'] ## {u'b1': u'b 1', u'b2': u'b 2', u'b3': u'b 3'} ##
##### p_2._json_1['b'][b3] ## b 3 ##
##### p_2._json_1[u'á'].encode('utf-8') ## á 0 ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_2._json_str_2 ## {"a": {"a1": "a 1", "a3": "a 3", "a2": "a 2"}, "\u00e1": "\u00e1 0", "b": {"b1": "b 1", "b2": "b 2", "b3": "b 3"}} ##
##### p_2._json_2 ## {u'a': {u'a1': u'a 1', u'a3': u'a 3', u'a2': u'a 2'}, u'\xe1': u'\xe1 0', u'b': {u'b1': u'b 1', u'b2': u'b 2', u'b3': u'b 3'}} ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_2._json_2['a'] ## {u'a1': u'a 1', u'a3': u'a 3', u'a2': u'a 2'} ##
##### p_2._json_2['a'][a2] ## a 2 ##
##### p_2._json_2['b'] ## {u'b1': u'b 1', u'b2': u'b 2', u'b3': u'b 3'} ##
##### p_2._json_2['b'][b3] ## b 3 ##
##### p_2._json_2[u'á'].encode('utf-8') ## á 0 ##
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##### p_2._json_str_3 ## {"a": {"a1": "a 1", "a3": "a 3", "a2": "a 2"}, "\u00e1": "\u00e1 0", "b": {"b1": "b 1", "b2": "b 2", "b3": "b 3"}} ##
------------------------------------------------------------------------------
Antes los resultados yo me dacantaría el p_1, más simple y menos engorroso, pero... como veo mucha trajín con el método del p_2 (no sólo en este foro, en muchos foros, webs, blogs,...) es posible que se me escape algo que no veo.
Alguién me puede decir dónde radica la diferencia. Un "Si lo hacen todos o casi todos por algo será" no me vale.