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

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 jsondata = {'name': 'nanbei', 'age': 18}
# 将Python对象编码成json字符串
print(json.dumps(data))

输出结果为:

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

再如:

import jsondata = 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 jsondata = {'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 jsondata = (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 jsondata = {'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 jsondata = {'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完结撒花😊❤️❤️❤️

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 内存管理篇-17解开页表的神秘面纱-上
  • 定时器方案:时间表盘
  • Python实现蜂窝六边形的实现方法
  • 素材无水印素材网站在哪下载?高清的无水印素材资源库分享
  • AcWing 902. 最短编辑距离
  • VS Code 安装文档
  • MediaGo下载器:专业级功能,轻松应对各种下载需求!
  • 【Qt笔记】QTreeView控件详解
  • 独孤思维:打工,被老板压榨怎么办?
  • AWTK fscript 中的字符串扩展函数
  • CString类的用法以及例子
  • Java_ElasticSearch(ES)——分布式搜索引擎
  • jmeter 响应乱码
  • Django+Vue二手交易平台的设计与实现
  • 智慧警用装备管理系统|支持国产化
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • CSS 三角实现
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript标准库系列——Math对象和Date对象(二)
  • k个最大的数及变种小结
  • Linux后台研发超实用命令总结
  • Mybatis初体验
  • React系列之 Redux 架构模式
  • React组件设计模式(一)
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 编写符合Python风格的对象
  • 第十八天-企业应用架构模式-基本模式
  • 关于使用markdown的方法(引自CSDN教程)
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 入口文件开始,分析Vue源码实现
  • 小李飞刀:SQL题目刷起来!
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • #pragma预处理命令
  • #微信小程序:微信小程序常见的配置传旨
  • (52)只出现一次的数字III
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)人的集合论——移山之道
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET 直连SAP HANA数据库
  • .net访问oracle数据库性能问题
  • /etc/motd and /etc/issue
  • ?.的用法
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • [2019红帽杯]Snake
  • [Android 数据通信] android cmwap接入点