Python: python模块介绍-json:json编码解码
May 28, 2015
Table of Contents
目录
JSON编码和解码
JSON(),由(取代了RFC4627)和,是一种轻量级的数据交换格式,灵感来自对象文字语法(严格来说它不是JavaScript的子集,因为它额外支持了行分割U+2028和段分割U+2029语法)。
simplejson的API和标准库marshal及pickle模块类似。它是包含在Python2.6的JSON库的外部版本,目前仍保持兼容的Python2.5并有显著的性能优势,尽管没有使用C扩展加速。 simplejson也支持Python的3.3+。
simplejson的的发布下载地址:, 最新代码:
- 编码基本的python对象层次
>>> import simplejson as json >>> json. dumps([ 'foo' , { 'bar' : ( 'baz' , None , 1.0 , 2 )}]) '["foo>", {"bar>": ["baz>", null, 1.0, 2]}]' >>> print ( json. dumps( " \>" foo \b ar" )) >" \" foo \b ar>" >>> 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 simplejson.compat import StringIO >>> io = StringIO() >>> json. dump([ 'streaming API' ], io) >>> io. getvalue() '["streaming API>"]'
- 紧凑编码
>>> import simplejson as json >>> obj = [ 1 , 2 , 3 ,{ '4' : 5 , '6' : 7 }] >>> json. dumps( obj, separators= ( ',' , ':' ), sort_keys= True ) '[1,2,3,{"4>":5,"6>":7}]' >>> json. dumps( obj, sort_keys= True ) '[1, 2, 3, {"4>": 5, "6>": 7}]'
- 更好的输出
>>> import simplejson as json >>> print ( json. dumps({ '4' : 5 , '6' : 7 }, sort_keys= True , indent= 4 * ' ' )) { "4>" : 5 , "6>" : 7 }
- 解码
>>> import simplejson as 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 \x08 ar' True >>> from simplejson.compat import StringIO >>> io = StringIO( '["streaming API>"]' ) >>> json. load( io)[ 0 ] == 'streaming API' True
- 使用Decimal代替浮点数
>>> import simplejson as 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 \x08 ar' True >>> from simplejson.compat import StringIO >>> io = StringIO( '["streaming API>"]' ) >>> json. load( io)[ 0 ] == 'streaming API' True
0 Comments