使用Python将字符串转换为JSON

Convert string to JSON using Python

我对Python中的JSON有点困惑。在我看来,它就像一本字典,因此我正努力做到这一点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
   "glossary":
    {
       "title":"example glossary",
       "GlossDiv":
        {
           "title":"S",
           "GlossList":
            {
               "GlossEntry":
                {
                   "ID":"SGML",
                   "SortAs":"SGML",
                   "GlossTerm":"Standard Generalized Markup Language",
                   "Acronym":"SGML",
                   "Abbrev":"ISO 8879:1986",
                   "GlossDef":
                    {
                       "para":"A meta-markup language, used to create markup languages such as DocBook.",
                       "GlossSeeAlso": ["GML","XML"]
                    },
                   "GlossSee":"markup"
                }
            }
        }
    }
}

但当我做print dict(json)时,它给出了一个错误。

如何将这个字符串转换成一个结构,然后调用json["title"]获得"示例词汇表"?


json.loads()

1
2
3
4
import json

d = json.loads(j)
print d['glossary']['title']


当我开始使用JSON的,出现了一个无法和它的一些时间,但最终我得到了我想要的这里是最简单的解决方案

1
2
3
4
5
import json
m = {'id': 2, 'name': 'hussain'}
n = json.dumps(m)
o = json.loads(n)
print o['id'], o['name']


或是用simplejson cjson speedups

1
2
3
4
5
6
7
import simplejson as json

json.loads(obj)

or

cjson.decode(obj)

如果你信托的数据源,你可以使用你的字符串转换成eval到词典

eval(your_json_format_string)

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> x ="{'a' : 1, 'b' : True, 'c' : 'C'}"
>>> y = eval(x)

>>> print x
{'a' : 1, 'b' : True, 'c' : 'C'}
>>> print y
{'a': 1, 'c': 'C', 'b': True}

>>> print type(x), type(y)
<type 'str'> <type 'dict'>

>>> print y['a'], type(y['a'])
1 <type 'int'>

>>> print y['a'], type(y['b'])
1 <type 'bool'>

>>> print y['a'], type(y['c'])
1 <type 'str'>