我正在尝试转换包含句子的字符串列表,如:
my_string=u'[{"id":1275829555,"guid":11}, {"id":1275829512,"guid" :12 }]'
并希望将其转换为以下json类型:
[
{
"id":1275829555,
"guid":11
},
{
"id":1275829555,
"guid":12
}
]
不幸的是我无法访问json
print type(my_string) # <type 'unicode'>
json_string = str( json.dumps(my_string, ensure_ascii=False).encode('utf8') )
print type(json_string) # <type 'str'>
j_obj = json.loads(json_string)
print type(j_obj) # <type 'unicode'>
print j_obj[0]
[
如何访问json来处理数组中的每个条目?
答案 0 :(得分:3)
嗨,你做的一切都是正确的,你只需要一个字符串而不是一个unicode
import json
import unicodedata
my_string=u'[{"id":1275829555,"guid":11}, {"id":1275829512,"guid" :12 }]'
my_string = unicodedata.normalize('NFKD', my_string).encode('ascii','ignore')
print type(my_string) # <type 'unicode'>
print my_string
print type(json_string) # <type 'str'>
j_obj = json.loads(str(a))
print type(j_obj) # <type 'unicode'>
print j_obj[0]["id"]
答案 1 :(得分:2)
对我来说,做
my_string=u'[{"id":1275829555,"guid":11}, {"id":1275829512,"guid" :12 }]'
j_obj = json.loads(my_string)
j_obj[0]
打印
{'guid': 11, 'id': 1275829555}
所以我在想你的json_string = str( json.dumps(my_string, ensure_ascii=False).encode('utf8') )
那件事让你搞砸了
答案 2 :(得分:1)
json.dumps将python对象序列化为字符串,json.loads将字符串反序列化为python对象。您将字符串传递给转储,转储将该字符串序列化为另一个字符串。我认为你想要的只是将my_string作为json_string。
>>> import json
>>> json_string = u'[{"id":1275829555,"guid":11}, {"id":1275829512,"guid" :12 }]'
>>> print json.dumps(json_string, ensure_ascii=False).encode('utf8') # No op. Just displaying string serialized to another string.
"[{\"id\":1275829555,\"guid\":11}, {\"id\":1275829512,\"guid\" :12 }]"
>>> j_obj = json.loads(json_string)
>>> print j_obj
[{u'guid': 11, u'id': 1275829555}, {u'guid': 12, u'id': 1275829512}]
>>> print j_obj[0]
{u'guid': 11, u'id': 1275829555}