[python]json.load(s)和json.dump(s)

446 阅读2分钟

参考网址

baijiahao.baidu.com/s?id=170146…

前言

load(s),加载,把别的形式的对象,加载为python的对象。
比如python中的dict对象,或者list对象。

什么是json

我们写代码的时候,经常会import json
总的来说,json的作用是:python自己的对象和json字符串对象之间的转换。

具体功能

import json

json.load(): 读取文件,返回python对象
json.loads(): 把json字符串对象-->python自己的对象,比如dict, list

json.dump(): 写入文件,把python对象转存为json字符串格式,没有返回值。
json.dumps(): 把python中的对象类型-->json字符串对象

也就是是说:json是python自己的对象和json字符串对象之间的转换的。


loaddump处理的主要是文件
loads和dumps处理的是字符串

关系图

图片.png

demo

import json

temp_dict = {'name':'张三', 'age': 20}  # python自己的dict对象
print(type(temp_dict))

new_object = joson.dumps(temp_dict)  # json字符串对象
print(type(new_object))

# temp_dict是python字典对象,new_object是json字符串对象

# 比如
a = '[11,22,33]' # a是json字符串对象(并不是所有的字符串都是json字符串,必须就有一定的格式才行)

b = json.loads(a)
b = [11,22,33]   # b是list对象,把a加载为python自己的对象之后,赋值给b,b就变成了list对象

# 总的来说:就是json字符串对象和python自己的对象之间的转换。

总结

在使用的时候,loads和dumps使用最广泛,需要重点关注。
那么,如何轻松的记住到底是用loads还是dumps呢?
其实也很简单,load意为加载,当需要将文件变成python自己的对象的时候,使用loads,意思就是加载成python的东西用loads,字典就是python的对象。
而dumps意为转存,意思就是将文件变成另外一种字符串形式用于存储,这时候选择dumps。

简单地说就是:加载python用loads,转存字符串用dumps。

dict_obj = {"e_name": "扣除服务费和违约金",
            "data_date": str(data_date),  # 实际逃单日期
            "ride_id": str(ride_id),  # ride_id
            "user_id": str(driver_user_id),  # user_id
            "role": "driver",  # 角色
            "tag": "0"}
            
with open(log_dir + "evasion_data_board.json", "a") as write_f:
    # 比如这里
    # dict_obj是python中的dict对象,如果要存储在文件中的话,就必须json.dumps()变成字符串的形式
    # 否则就不能存储
    json_obj = json.dumps(dict_obj, ensure_ascii=False)  
    write_f.write(json_obj)
    write_f.write("\n")
如果你得到一个json字符串,如果你想灵活的访问其中的属性或者元素的话,
你必须先json.loads()加载成python的对象,比如dictlist
这样就可以使用了。