python存储json数据_数据存储之python下JSON的写入和读取(一)

数据存储之python下JSON的保存和读取(一)

JSON字符串的含义

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。更多解释请见:https://baike.baidu.com/item/JSON/2462549?fr=aladdinJSON

支持数据格式:

对象(字典):使用花括号。

数组(列表):使用方括号。

字符串类型:字符串必须要用双引号,不能用单引号)。

整形

浮点型

布尔类型

null类型。

总之,json是字符串的一种书写格式,它还是一个字符串。

编码和解码

由python格式数据类型 ----> json字符串 = 编码

由json字符串 ----> python格式数据类型 =解码

编码

dumps 和dump

dump区别于dumps的地方在于,dump可传入文件句柄。

当你的python格式数据中包含中文字符串时,注意使用ensure_ascii参数,因为dumps默认是以ascii编码方式进行的

#1.dumps,将python类型转换为json格式字符串

json_str = json.dumps(data_dict)

print(json_str)#[{"book": "\u7f57\u5bbe\u900a\u6e38\u8bb0", "\u4ef7\u683c": 15.5, "\u6709\u8d27": false}, {"book": "\u4e09\u56fd\u6f14\u4e49", "\u4ef7\u683c": 19, "\u6709\u8d27": true}, {"book": "\u632a\u5a01\u7684\u68ee\u6797", "\u4ef7\u683c": 23, "\u6709\u8d27": true}]

#上面可以看得出来,中文存在问题,因为编码时,默认是以ascii码的编码方式进行的,解决的办法也很简单,就是ensure_ascii参数

json_chinese_str = json.dumps(data_dict,ensure_ascii=False)

print(json_chinese_str)

#2.dump,区别于dumps ,dump可传入一个f句柄对象

f = open("json.json","w",encoding="utf-8")

json.dump(data_dict,f,ensure_ascii=False)

f.close()

解码

load和loads,两者的区别依然是load传入的是文件句柄,loads传入的是json串。

#3.loads 将json字符串解码成python格式

str = '[{"book": "罗宾逊游记", "价格": 15.5, "有货": false}, {"book": "三国演义", "价格": 19, "有货": true}, {"book": "挪威的森林", "价格": 23, "有货": true}]'

json_list = json.loads(str,encoding="utf-8")

print(json_list)

#4.load

f = open('json.json',"r",encoding="utf-8")

json_list = json.load(f)

f.close()

print("sda",json_list)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值