当前位置: 首页 > article >正文

python基础学习(最终篇)

文章目录

  • JSON的基础使用
    • 一. JSON简介
    • 二. JSON语法规则
    • 三. JSON数据类型
    • 四. JSON对象
    • 五. JSON数组
    • 六. JSON函数
      • 1. json.dumps
      • 2. json.loads
      • 3. json.dump
      • 4. json.load
      • 5. encode
      • 6. decode
      • 7. 参数说明
    • 总结

JSON的基础使用

一. JSON简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。

JSON用来存储和交换文本信息,比xml更小/更快/更易解析,易于读写,占用带宽小,网络传输速度快的特性,适用于数据量大,不要求保留原有类型的情况。。

前端和后端进行数据交互,其实就是JS和Python进行数据交互!

二. JSON语法规则

  1. 名称必须用双引号(即:" ")来包括
  2. 值可以是双引号包括的字符串、数字、true、false、null、JavaScript数组或子对象
  3. 数据在name/value中
  4. 数据见用逗号分隔
  5. 花括号保存对象
  6. 方括号保存数组

三. JSON数据类型

一并列举出Python与JSON数据类型的映射关系:

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

四. JSON对象

在花括号中书写,对象可以包含多个名称/值对。
例如:

{"firstname": "jonh", "lastname": "Doe"}

五. JSON数组

Employees是包含三个对象的数组。

每个对象代表一条关于某个人名的记录,在方括号中书写,数组可以包含多个对象:

{
    "employees": [
        { “firstName”:“John” , “lastName”:“Doe” },
        { “firstName”:“Anna” , “lastName”:“Smith” },
        { “firstName”:“Peter” , “lastName”:“Jones” }
    ]
}

再比如:

[
   {
     "name": "情歌",
     "artist": "云汐",
     "url": "https://xingstar520.oss-cn-beijing.aliyuncs.com/%E4%BA%91%E6%B1%90%20-%20%E6%83%85%E6%AD%8C.mp3",
     "cover": "https://xingstar520.oss-cn-beijing.aliyuncs.com/%E6%83%85%E6%AD%8C.png",
     "lrc": "/source/json/云汐-情歌.lrc"
   },
   {
     "name": "青花瓷",
     "artist": "周杰伦",
     "url": "https://npm.elemecdn.com/anzhiyu-music@1.0.4/青花瓷/青花瓷.mp3",
     "cover": "https://y.qq.com/music/photo_new/T002R300x300M000002eFUFm2XYZ7z_2.jpg?max_age=2592000",
     "lrc": "https://npm.elemecdn.com/anzhiyu-music@1.0.4/青花瓷/青花瓷.lrc"
   }
]

六. JSON函数

使用 JSON 函数需要导入 json 库:import json。

函数描述
json.dumps将 Python 对象编码成 JSON 字符串
json.loads将已编码的 JSON 字符串解码为 Python 对象
json.dump将Python内置类型序列化为json对象后写入文件
json.load读取文件中json形式的字符串元素转化为Python类型
encode将 Python 对象编码成 JSON 字符串
decode将已编码的 JSON 字符串解码为 Python 对象

1. json.dumps

json.dumps 用于将 Python 对象编码成 JSON 字符串。

import json

data = {'name': 'nanbei', 'age': 18}
# 将Python对象编码成json字符串
print(json.dumps(data))

输出结果为:

{"name": "nanbei", "age": 18}

再如:

import json

data = json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data)
# separators参数用于指定分隔符 indent参数用于指定缩进字符个数 sort_keys参数用于指定是否按照字典排序输出

输出结果为:

{
    "a": "Runoob",
    "b": 7
}

2. json.loads

json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

import json

data = {'name': 'nanbei', 'age': 18}
# 将Python对象编码成json字符串
print(json.dumps(data, sort_keys=True, indent=4, separators=(',', ':')))
# 将json字符串解码成Python对象
a = json.dumps(data)
print(json.loads(a))

输出结果为:

{
    "age":18,
    "name":"nanbei"
}
{'name': 'nanbei', 'age': 18}

再如:

import json
 
data = (1,2,3,4)
data_json = [1,2,3,4]
#将Python对象编码成json字符串
print(json.dumps(data))
print(json.dumps(data_json))
 
#将Python对象编码成json字符串
a = json.dumps(data)
b = json.dumps(data_json)
#将json字符串编码成Python对象
print(json.loads(a))
print(json.loads(b))

输出结果为:

[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]

3. json.dump

将Python内置类型序列化为json对象后写入文件:

import json
 
data = {
    'nanbei':'haha',
    'a':[1,2,3,4],
    'b':(1,2,3)
}
with open('json_test.txt','w+') as f:
    json.dump(data,f)

4. json.load

读取文件中json形式的字符串元素转化为Python类型:

import json
 
data = {
    'nanbei':'haha',
    'a':[1,2,3,4],
    'b':(1,2,3)
}
with open('json_test.txt','w+') as f:
    json.dump(data,f)
 
with open('json_test.txt','r+') as f:
    print(json.load(f))

5. encode

Demjson3
demjson3 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。
安装模块:

pip install demjson3

Python encode() 函数用于将 Python 对象编码成 JSON 字符串。

import demjson3  
  
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]  
  
json = demjson3.encode(data)  
print(json)

6. decode

Python 可以使用 demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。

import demjson3  
  
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';  
  
text = demjson3.decode(json)  
print(text)

7. 参数说明

参数作用
skipkeys如果为True的话,则只能是字典对象,否则会TypeError错误, 默认False
ensure_ascii确定是否为ASCII编码
check_circular循环类型检查,如果为True的话
allow_nan确定是否为允许的值
indent会以美观的方式来打印,呈现,实现缩进
separators对象分隔符,默认为,
encoding编码方式,默认为utf-8
sort_keys如果是字典对象,选择True的话,会按照键的ASCII码来排序

总结

  1. dump:存入的实例对象object(序列化)
  2. dumps:存入的JSON的字符串数据
  3. load:读取的实例对象object(反序列化)
  4. loads:读取的JSON的字符串数据,转化为Python字典对象

❤️❤️❤️Python完结撒花😊❤️❤️❤️

http://www.kler.cn/a/284528.html

相关文章:

  • 基于Spring Boot与Redis的令牌主动失效机制实现
  • FluentUI使用
  • C++ 并发专题 - 自旋锁的实现(Spinlock)
  • HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
  • 免费,WPS Office教育考试专用版
  • Redis - 集群(Cluster)
  • Unclutter - 苹果电脑(Mac)桌面文件笔记剪贴板管理工具
  • jenkins如何生成报告并查看报告,如何安装allure插件
  • MySQL-基础篇-事务(事务简介、事务操作、事务的四大特性、并发事务引发的问题、事务的隔离级别)
  • 前波士顿咨询Platinion董事总经理陈果加入望繁信科技
  • RK3568平台(平台总线篇)SPI驱动框架分析
  • 今日算法:蓝桥杯基础题之“星系炸弹”
  • Python | Leetcode Python题解之第384题打乱数组
  • Claude 与 ChatGPT:哪个更适合学术写作,深入对比分析
  • linux批量解压tar.gz文件
  • I/0系统基本概念
  • ORACLE 统计信息的备份与恢复
  • Servlet 简介+ Cookie和session+过滤器Filter和监听器Listener
  • Vue3 ref 和 reactive 的区别
  • 命名空间using namespace std
  • Python编码系列—Python代码重构:提升代码质量
  • 编成笔记-atan2函数学习分析
  • spring 声明式事务方法自调用问题
  • C与C++的三种区分方式
  • 脚手架工具的应用(前端和后端搭建)
  • 惠中科技光伏清洁领域的专业引领者