Python学习21天学习挑战赛Day3~4之json模块总结

本文详细介绍了Python中的json模块,包括JSON简介、基本语法、对象和数组结构,以及loads和dumps函数的使用实例,以及如何处理JSON文件。通过实例演示了字符串转换和文件操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   活动地址:优快云21天学习挑战赛

作者简介:大家好我是Apathfinder,目前是一名在校大学生,软件工程专业,记录学习路上的点点滴滴。
个人主页:Apathfinder

本文专栏:Python学习

前言:本文是对学习完json模块后的一个总结,包含了loads以及dumps等函数的使用。


目录

正文

一.JSON

        1.JSON简介

        2.JSON语法 

         JSON 的两种结构:

                1.对象:

                2.数组:

        3.JSON字符串处理

                1.json.loads(''loads'' means ''load string'')

                2.json.dumps(''dumps'' means ''dump string'' )

        4.JSON文件处理 

写在最后



正文

一.JSON

        1.JSON简介

        JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),JavaScript对象表示法是一种流行的格式,将数据格式化,成为人们可读的字符串。

  • JSON 是存储和交换文本信息的语法,类似 XML
  • JSON 比 XML 更小、更快,更易解析
  • JSON 易于人阅读和编写
  • JSON独立于语言

        2.JSON语法 

        JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在键/值对中
  • 数据由逗号 , 分隔
  • 使用斜杆来转义 \ 字符
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象

        


         JSON 的两种结构:

                1.对象:

        大括号 {} 保存的对象是一个无序的键/值对集合。一个对象以左括号 { 开始, 右括号 } 结束。每个"键"后跟一个冒号 :,键/值对使用逗号 , 分隔。

        JSON 对象在大括号 {} 中书写:{key1 : value1, key2 : value2, ... keyN : valueN },对象可以包含多个键/值对:

{"rank": 1, "name": "spiderman", "is_male": true, "money": null}

        JSON对象嵌套 

json_data1 = '{"name": "baidu", "age": 10,"sites": {"site1": "www.baidu.com","site2": "ww.baidu.com","site3": "w.baidu.com"}}'
python_data1 = json.loads(json_data1)
print(python_data1)

                2.数组:

        中括号 [] 保存的数组是值(value)的有序集合。一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔。(值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array),它们是可以嵌套)

[ "Google", "Jingdong", "Taobao" ]

        对象的属性可以是数组 

{
"name":"网站",
"num":3,
"sites":[ "Google", "Jingdong", "Taobao" ]
}

        3.JSON字符串处理

        Python的JSON模块处理了JSON数据字符串和Python值之间转换的所有细节,得到了json.loads(),json.dumps函数。

        使用前导入JSON模块:

import json

        JSON并不能存储每一种Python值,它只能包含以下Python数据类型的值:

  • int(整型)
  • float(浮点型)
  • string(字符串)
  • list(列表)
  • tuple(元组)
  • dict(字典)
  • NoneType
  • boolean   (布尔型)    

                1.json.loads(''loads'' means ''load string''

         使用loads()将JSON数据字符串转换为Python值,下表是从JSON到Python的数据类型转换

JSON解码为Python类型转换表
JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone

import json
json_data1 = '{"rank": 1, "name": "spiderman", "is_male": true, "money": null, ' \
             '"family": ["dad", "mom", "brother", "dog"]}'
python_data1 = json.loads(json_data1)
print("json字符串解码前:", json_data1)
print("json字符串解码后:", python_data1)    #为Python字典

 可以明显看出类型的不同,true--True, null--None等


                2.json.dumps(''dumps'' means ''dump string'' )

        使用dumps()将Python值转换为JSON数据字符串,下表是从Python到JSON的数据类型转换 

Python编码为JSON类型转换表
PythonJSON
dictobject
list, tuplearray
strstring
int, float, int- & float-derived Enumsnumber
Truetrue
Falsefalse
Nonenull

代码 

import json

# Python 对象(字典):转换包含所有合法数据类型的 Python 对象:
student_py = {
  "name": "Bill",
  "age": 63,
  "married": True,
  "divorced": False,
  "children": ("Jennifer","Rory","Phoebe"),
  "pets": None,
  "cars": [
    {"model": "Porsche", "mpg": 38.2},
    {"model": "BMW M5", "mpg": 26.9}
  ]
}
# 转换为 JSON:
student_json = json.dumps(student_py)

# 结果是 JSON 字符串:
print("编码前:", student_py)
print("编码后:", student_json)

结果 

编码前: {'name': 'Bill', 'age': 63, 'married': True, 'divorced': False, 'children': ('Jennifer', 'Rory', 'Phoebe'), 'pets': None, 'cars': [{'model': 'Porsche', 'mpg': 38.2}, {'model': 'BMW M5', 'mpg': 26.9}]}
编码后: {"name": "Bill", "age": 63, "married": true, "divorced": false, "children": ["Jennifer", "Rory", "Phoebe"], "pets": null, "cars": [{"model": "Porsche", "mpg": 38.2}, {"model": "BMW M5", "mpg": 26.9}]}

        

        4.JSON文件处理 

                如果处理的是文件而不是字符串,可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。 

data = {
  "name": "Bill",
  "age": 63,
  "married": True,
  "divorced": False,
  "children": ("Jennifer","Rory","Phoebe"),
  "pets": None,
  "cars": [
    {"model": "Porsche", "mpg": 38.2},
    {"model": "BMW M5", "mpg": 26.9}
  ]
}
# 写入 JSON 数据
with open('data.json', 'w') as f:
    json.dump(data, f)

# 读取数据
with open('data.json', 'r') as f:
    data2 = json.load(f)
    print(data2)

         写入成功

#读取结果
{'name': 'Bill', 'age': 63, 'married': True, 'divorced': False, 'children': ['Jennifer', 'Rory', 'Phoebe'], 'pets': None, 'cars': [{'model': 'Porsche', 'mpg': 38.2}, {'model': 'BMW M5', 'mpg': 26.9}]}

写在最后

        今天的文章就到这里,如果你觉得写的不错,可以动动小手给博主一个免费的关注和点赞👍;如果你觉得存在问题的话,欢迎在下方评论区指出和讨论。
谢谢观看,你的支持就是我前进的动力!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apathfinder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值