python基础学习(最终篇)

admin2024-08-31  8

文章目录

  • 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完结撒花😊❤️❤️❤️
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!