Python基础(二)

本文介绍了JSON的基本概念,作为数据交换格式在Python中的应用。讲解了Python与JSON数据类型的对应关系,并展示了如何使用json模块的load、dump、loads和dumps方法进行数据的读取、写入、转换。示例中详细解释了各方法的使用场景及注意事项,包括处理中文字符的方法。
摘要由CSDN通过智能技术生成

Python基础(二):


本章列举出json格式在python中的常用方法

1、什么是JSON

*JSON(JavaScript Object Notation)*是一种轻量级的数据交换格式,广泛应用于AJAX中web服务器和客户端的通讯的数据格式,现在也常用于HTTP请求中。其数据支持对象、数组、字符串、数字、true/false和null

Python数据类型与json数据类型的映射关系如下:

PythonJSON
dictobject
list,tuplearray
str,unicodestring
int,long,floatnumber
Truetrue
Falsefalse
Nonenull

JSON拥有严格的格式,主要格式如下:
1、只能用双引号,不能用单引号
2、元素之间用逗号隔开,最后一个元素不能有逗号
3、不支持注释
4、中文等特殊字符传输时应确保转为ASCII码(\uXXX格式)
5、支持多层嵌套Object或Array

JSON的语法如下:
数组(Array)用方括号(“[]”)表示。
对象(0bject)用大括号(“{}”)表示。
名称/值对(name/value)组合成数组和对象。
名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。
并列的数据之间用逗号(“,”)分隔

举个栗子:

{
    "name": "Sharon",
    "sex": "Male",
    "age": 27,
    "vip": true,
    "favor": {
        "水果": "西瓜",
        "运动": "跑步"
    },
    "family_member": [
        "Father",
        "Mother",
        "Brother"
    ]
}

2、JSON常用方法

常用方法有4个:load、dump、loads、dumps
1、json.load():从文件中读取json格式数据,并返回对应的python数据类型
test.txt存放上面例子中的json数据

import json
with open("test.txt", "r+", encoding="utf-8") as fr:
    res = json.load(fr)
    print(res)
    print(type(res))
输出如下:
{'name': 'Sharon', 'sex': 'Male', 'age': 27, 'vip': True, 'favor': {'水果': '西瓜', '运动': '跑步'}, 'family_member': ['Father', 'Mother', 'Brother']}
<class 'dict'>

注意:如果json中包含中文数据,文件需要编码成utf-8

2、json.dump():将python格式数据转换为json格式并写入文件

with open("test.txt", "w+", encoding="utf-8") as fw:
    json.dump(dict1, fw, ensure_ascii=False)

注意:如果要写入中文数据,文件需要编码成utf-8,且
ensure_ascii参数要设置为False:表示不使用ASCII编码。因为json序列化时默认使用ascii编码,输出到文件中就会是"\u6c34\u679c"

3、json.loads():将json对象转换成python对象
4、json.dumps():将python对象转换成json对象

res1 = json.dumps(dict1, indent=4, ensure_ascii=False)
print(res1)
print("dumps后的数据类型为:")
print(type(res1))
res2 = json.loads(res1)
print(res2)
print("loads后的数据类型为:")
print(type(res2))
输出如下:
{
    "name": "Sharon",
    "sex": "Female",
    "age": 27,
    "vip": true,
    "favor": {
        "水果": "西瓜",
        "运动": "跑步"
    },
    "family_member": [
        "Father",
        "Mother",
        "Brother"
    ]
}
dumps后的数据类型为:
<class 'str'>
{'name': 'Sharon', 'sex': 'Female', 'age': 27, 'vip': True, 'favor': {'水果': '西瓜', '运动': '跑步'}, 'family_member': ['Father', 'Mother', 'Brother']}
loads后的数据类型为:
<class 'dict'>

注意:indent参数表示缩进

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值