Python3内置模块之json编解码方法小结

系统 1455 0

概述

Python3中我们利用内置模块 json 解码和编码 JSON对象 ,JSON(JavaScript Object Notation)是指定 RFC 7159(废弃了RFC 4627)和 ECMA-404是一种轻量级数据交换格式,受 JavaScript对象文字语法的启发 (虽然它不是JavaScript 1的严格子集)。下面为Python对象–>JSON对象的对照关系表。

Python JSON
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null

dumps编码

我们利用 dumps 将Python对象编码为 JSON对象 ,当然 dumps 只完成了序列化为str,而 dump 必须传文件描述符,将序列化的str保存到文件中,它们的函数定义为
dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

编码字典

            
              
                import
              
               json 
D 
              
                =
              
              
                {
              
              
                'one'
              
              
                :
              
              
                1
              
              
                ,
              
              
                'two'
              
              
                :
              
              
                2
              
              
                ,
              
              
                'three'
              
              
                :
              
              
                3
              
              
                }
              
              
J 
              
                =
              
               json
              
                .
              
              dumps
              
                (
              
              D
              
                )
              
              
                print
              
              
                (
              
              J
              
                )
              
            
          

示例结果:

            
              {"one": 1, "two": 2, "three": 3}

            
          

编码列表

            
              
                import
              
               json 
L 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                'Python '
              
              
                ,
              
              
                {
              
              
                'one'
              
              
                :
              
              
                1
              
              
                ,
              
              
                'two'
              
              
                :
              
              
                2
              
              
                ,
              
              
                'three'
              
              
                :
              
              
                3
              
              
                }
              
              
                ,
              
              
                ''
              
              
                ]
              
              
J 
              
                =
              
               json
              
                .
              
              dumps
              
                (
              
              L
              
                )
              
              
                print
              
              
                (
              
              J
              
                )
              
            
          

示例结果:

            
              [1, "Python ", {"one": 1, "two": 2, "three": 3}, ""]

            
          

编码

            
              
                import
              
               json 
S 
              
                =
              
              
                'Python'
              
              
J 
              
                =
              
               json
              
                .
              
              dumps
              
                (
              
              S
              
                )
              
              
                print
              
              
                (
              
              J
              
                )
              
            
          

示例结果:

            
              "Python"

            
          

格式化输出JSON

            
              
                import
              
               json 
L 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                'Python '
              
              
                ,
              
              
                {
              
              
                'one'
              
              
                :
              
              
                1
              
              
                ,
              
              
                'two'
              
              
                :
              
              
                2
              
              
                ,
              
              
                'three'
              
              
                :
              
              
                3
              
              
                }
              
              
                ,
              
              
                True
              
              
                ]
              
              
J 
              
                =
              
               json
              
                .
              
              dumps
              
                (
              
              L
              
                ,
              
               sort_keys
              
                =
              
              
                True
              
              
                ,
              
               indent
              
                =
              
              
                4
              
              
                )
              
              
                print
              
              
                (
              
              J
              
                )
              
            
          

示例结果:

            
              [
    1,
    "Python ",
    {
        "one": 1,
        "three": 3,
        "two": 2
    },
    true
]

            
          

loads解码

我们利用 loads 用于解码 JSON对象 。解码结果即与之对应的 Python对象 类型。当然 loads 只完成了反序列化, load 只接收文件描述符,完成读取文件和反序列化。它们的函数定义为
loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
比如我们用来解码上个示例的数据

            
              
                import
              
               json 
jsondata 
              
                =
              
              
                '''
[
    1,
    "Python ",
    {
        "one": 1,
        "three": 3,
        "two": 2
    },
    true
]
'''
              
              
J 
              
                =
              
               json
              
                .
              
              loads
              
                (
              
              jsondata
              
                )
              
              
                print
              
              
                (
              
              
                type
              
              
                (
              
              J
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              J
              
                )
              
            
          

示例结果:

            
              
                
[1, 'Python ', {'one': 1, 'three': 3, 'two': 2}, True]

              
            
          

可以看到我们成功对上个例子中的JSON对象进行了解码,并且最终的解码结果为Python列表对象类型,符合Python对象-JSON对象对照表的结果。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论