python 中关于json的封装和解析

1、json在python中的用法

在Python中我们大多数都是用json来进行数据的编码和解码

  • json.dumps()  是将 列表,元祖,字典类型或者由前者组合而成的数据类型的数组编码成json格式的数据,然后存储到文件中
  • json.loads()   是将json格式的文件解析
  • s_dumps = json.dumps(data_obj, sort_keys=True, indent=4, ensure_ascii=False  其中sort_keys=True表示按键排序,indent=4表示以4个空格缩进,ensure_ascii表示是否以ASCII码编码
list1=[1,2,3,4]
temp=(1,2,3,4)
dic={"name":123}

#json编码
res1=json.dumps(list1)
res2=json.dumps(temp)
res3=json.dumps(dic)


#json解析
rst1=json.loads(res1)
rst2=json.loads(res2)
rst3=json.loads(res3)

#当需要将Python中的对象进行json编码时,需调用对象的__dict__方法
class A():
    def __init__(self):
        self.name="xx"
        self.age=30
a=A()
print(json.dumps(a.__dict__))

'''
dump()的第一个参数是要序列化的对象,第二个参数是打开的文件句柄
注意打开文件时加上以UTF-8编码打开
* 运行此文件之后在统计目录下会有一个data.json文件,打开之后就可以看到json类型的文件应该是怎样定义的
'''
with open("data.json", "w", encoding="UTF-8") as f:
    s_dump = json.dump(data_obj, f, ensure_ascii=False)



"""
load:从一个打开的文件句柄加载数据
注意打开文件的编码
"""
with open("data.json", "r", encoding="UTF-8") as f_load:
    r_load = json.load(f_load)
print(r_load)

 

2、当把存储json文件时,希望以中文显示需要加入 ensure_ascii=False这个条件,同时在写入文件时要加入encoding="utf-8"

with open("filename.txt","w",encoding="utf-8") as f:
    
    content=json.dumps(data,ensure_ascii=False)
    f.write(content)
    
    f.close()

这样就解决了文件中中文字符的编码问题

posted @ 2018-10-28 17:15  廉少  阅读(2955)  评论(0编辑  收藏  举报