暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一文了解python中的json数据储存

玩转云原生 2018-05-25
255

1json简介


json是一种轻量级的数据交换方式,受JavaScript对象文字语法的启发而开发。json数据层次结构简洁而清晰,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

python中导入json方法:import json(内置模块)

函数:

json.dump/json.dumps      序列化python对象为json

json.load/json.loads           反序列化json为python对象


2序列化与反序列化原则


python 对象序列化为json:



python 对象序列化为json:



3函数实例

       

>>> json.dumps(['foo', {'bar': ('baz'None1.02)}])

'["foo", {"bar": ["baz", null, 1.0, 2]}]'

>>> print(json.dumps("\"foo\bar"))

"\"foo\bar"

>>> print(json.dumps('\u1234'))

"\u1234"

>>> print(json.dumps('\\'))

"\\"

>>> print(json.dumps({"c"0"b"0"a"0}, sort_keys=True))

{"a": 0, "b": 0, "c": 0}

>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))

'[1,2,3,{"4":5,"6":7}]'

>>>print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))

{

    "4": 5,

    "6": 7

}


>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')

       ['foo', {'bar': ['baz', None, 1.0, 2]}]

>>> json.loads('"\\"foo\\bar"')

       '"foo\x08ar'


4数据保存与数据读取

       

使用方式:以file-like的方式保存或者读取

例如:

with open(filename.json”,”w”) as f:

                 f.write(json.dumps(your_data))

with open(“filename.json”,“r”) as f:

                  your_data=json.loads(f.read())

        或者:

                f=open('filename.json','w') 

                json.dumps(your_data,f)

        


5json进阶:序列化类


以下内容来自于廖老师官方分享:

链接:http://135.mx/iIj2Mn

import jsonclass Student(object):
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score
s = Student('Bob', 20, 88)
print(json.dumps(s))

显然,直接序列化是不行的,我们能做的方法之一是将类实例化后写入一个字典,就能序列化了:

def student2dict(std):

   return { 'name': std.name, 

             'age': std.age, 

             'score': std.score

           }

print(json.dumps(s,default=student2dict))

或者直接把类的实例变为dict:

print(json.dumps(s, default=lambda obj: obj.__dict__))


今天的关于json的分享就这些了,可点击下方“阅读原文”了解官方内容。


o长按关注o


文章转载自玩转云原生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论