如何在将字符串转换为json后访问json值

时间:2015-11-03 07:35:33

标签: python json

我正在尝试转换包含句子的字符串列表,如:

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来处理数组中的每个条目?

3 个答案:

答案 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}