本文实例讲述了Python解析json的方法。分享给大家供大家参考,具体如下:
刚学习到Python中解析json的方法,觉得有必要在这里坐下笔记。
我是在python的内部环境中看的
Encoding basic Python object hierarchies
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
>>> import json
>>> json.dumps([ 'foo' , { 'bar' : ( 'baz' , None , 1.0 , 2 )}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print json.dumps( "\"foo\bar" )
"\"foo\bar"
>>> print json.dumps(u '\u1234' )
"\u1234"
>>> print json.dumps( '\\' )
"\\"
>>> print json.dumps({ "c" : 0 , "b" : 0 , "a" : 0 }, sort_keys = True )
{ "a" : 0 , "b" : 0 , "c" : 0 }
>>> from StringIO import StringIO
>>> io = StringIO()
>>> json.dump([ 'streaming API' ], io)
>>> io.getvalue()
'["streaming API"]'
|
Compact encoding::
1
2
3
4
5
6
7
8
9
10
11
|
>>> import json
>>> json.dumps([ 1 , 2 , 3 ,{ '4' : 5 , '6' : 7 }], sort_keys = True , separators = ( ',' , ':' ))
'[1,2,3,{"4":5,"6":7}]'
Pretty printing::
>>> import json
>>> print json.dumps({ '4' : 5 , '6' : 7 }, sort_keys = True ,
indent = 4 , separators = ( ',' , ': ' ))
{
"4" : 5 ,
"6" : 7
}
|
Decoding JSON::
1
2
3
4
5
6
7
8
9
10
|
>>> import json
>>> obj = [u 'foo' , {u 'bar' : [u 'baz' , None , 1.0 , 2 ]}]
>>> json.loads( '["foo", {"bar":["baz", null, 1.0, 2]}]' ) = = obj
True
>>> json.loads( '"\\"foo\\bar"' ) = = u '"foo\x08ar'
True
>>> from StringIO import StringIO
>>> io = StringIO( '["streaming API"]' )
>>> json.load(io)[ 0 ] = = 'streaming API'
True
|
Specializing JSON object decoding::
1
2
3
4
5
6
7
8
9
10
11
|
>>> import json
>>> def as_complex(dct):
if '__complex__' in dct:
return complex (dct[ 'real' ], dct[ 'imag' ])
return dct
>>> json.loads( '{"__complex__": true, "real": 1, "imag": 2}' ,
object_hook = as_complex)
( 1 + 2j )
>>> from decimal import Decimal
>>> json.loads( '1.1' , parse_float = Decimal) = = Decimal( '1.1' )
True
|
Specializing JSON object encoding::
1
2
3
4
5
6
7
8
9
10
11
|
>>> import json
>>> def encode_complex(obj):
if isinstance (obj, complex ):
return [obj.real, obj.imag]
raise TypeError( repr (o) + " is not JSON serializable" )
>>> json.dumps( 2 + 1j , default = encode_complex)
'[2.0, 1.0]'
>>> json.JSONEncoder(default = encode_complex).encode( 2 + 1j )
'[2.0, 1.0]'
>>> ''.join(json.JSONEncoder(default = encode_complex).iterencode( 2 + 1j ))
'[2.0, 1.0]'
|
或者也可以去看官方文档,自己能学到东西才是真的!
希望本文所述对大家Python程序设计有所帮助。