4.2 Json文本存储

目录

1、JSON简介

2、JSON对象

3、json.dumps 和 json.dump

(1) json.dumps

(2) json.dump

4、json.loads 和 json.load

(1) json.loads

(2) json.loads


1、JSON简介

        JSON即 JavaScript 对象标记,通过对象和数组的组合来表示数据。

        Json文本存储相比于txt存储更方便,可直接将非字符串内容存入文本中(本质是将非字符串内容直接转换为json文本字符串存入)。

2、JSON对象

        在 JavaScript 语言中,一切皆可为 Json 作用对象,即可以通过 Json 表示的任何支持的数据类型,例如:字符串、数字、对象、数组、字典、列表。(为了与其中的对象区分。我将 json 作用对象与数据类型 json 对象分开称呼)

        数据类型对象和数组在这里类似于字典与列表,不过Json对象中的键值对是用双引号,字典是单双引号都可以。(Json数据需要用双引号包围,具体见下例)     

3、json.dumps 和 json.dump

(1) json.dumps

json.dumps 可将 JSON 作用对象(字典、列表等)转换为JSON文本字符串。

json.dumps 常用参数: 作用对象data,ensure_ascii调节中文乱码, indent缩进。

使用方法见下例:我们需要将data_dict 这个字典数据存入文本。

import json

data_dict = {
    'name': 'json',
    'age': 15
}
print('data_dict的数据类型:', type(data_dict))    
file = open('data.json', 'w', encoding='utf-8')
data = json.dumps(data_dict)
print('data的数据类型:', type(data))
file.write(data)
file.close()

# 输出: data_dict的数据类型: <class 'dict'>
#       data的数据类型: <class 'str'>

如果name换成中文名会如何?答案是文件中会乱码,此时需要添加额外参数ensure_ascii。

再加入indent:

data = json.dumps(data_dict, ensure_ascii=False, indent=2)

文件中结果如下:

(2) json.dump

        提供直接对文件进行写入。效果如上。

import json

data_dict = {
    'name': '约翰',
    'age': 15
}
file = open('data.json', 'w', encoding='utf-8')
json.dump(data_dict, file, indent=2, ensure_ascii=False)

4、json.loads 和 json.load

(1) json.loads

json.loads可以将JSON文本字符串转换为JSON作用对象(类似相当于去字符串符号)

import json

data_dict_str = '''
{
        "name": "约翰",
        "age": 15
}
'''
json_data = json.loads(data_dict_str)
print(json_data)
print(type(json_data))

(2) json.loads

       直接从文件中读出 json文本字符串

import json

file = open('data.json', 'r', encoding='utf-8')
data = json.load(file)
print(data)
print(type(data))

结果如上相同。

本人新手,若有错误,欢迎指正;若有疑问,欢迎讨论。若文章对你有用,点个小赞鼓励一下,谢谢,一起加油吧!

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值