Python中JSON的基本操作


JSON介绍

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是JavaScript(ECMAScript)的子集,采用完全独立于编程语言的文本格式来存储和表示数据。

JSON的语法格式

  1. 最外层用{}扩起来;
  2. 数据以“键:值”对的形式表示,其中键必须用双引号括起来,值可以是双引号包括的字符串、数字、true、false、null、或子对象;
  3. 每个“键:值”对用逗号分隔;

示例:

{"name": "laobai", "age": 20, "address": "beijing"}
{
  "students": [
    {"name": "laobai", "age": 20, "address": "beijing"},
    {"name": "nichengwe", "age": 18, "address": "shanghai"},
    {"name": "nichengyou", "age": 20, "address": "guangzhou"}
  ]
}

序列化与反序列化

序列化

序列化:把内存⾥的数据类型转换为一种特定格式的内容(例如json格式),使能够存储到硬盘或通过⽹络传输到远程。简单的说就是把Python的数据类型(字典,元组,列表)转为特定的数据类型过程。

反序列化

反序列化,就是将特定的内容(例如json格式)转为Python对象的过程。

Python操作JSON

在Python⾥⾯,进行序列化和反序列化使⽤到的标准库是json,下⾯主要依据不同的数据类型(list,tuple,dict)来进⾏序列化和反序列化的操作。

import json

list1=[1,2,3,4,5,[True,None]]
tuple1=('laobai','age','address')
dict1={'name':'laobai','age':20,'address':'beijing'}
print('----------------------------------')
print('操作前的元list:',list1)
print('操作前的元tuple:',tuple1)
print('操作前的元字典:',dict1)
print('----------------------------------')
print('对list进⾏序列化:',json.dumps(list1))
print('序列化后的类型:',type(json.dumps(list1)))
print('对list序列化后的内容进⾏反序列化:',json.loads(json.dumps(list1)))
print('反序列化后的类型:',type(json.loads(json.dumps(list1))))
print('----------------------------------')
print('对tuple进⾏序列化:',json.dumps(tuple1))
print('序列化后的类型:',type(json.dumps(tuple1)))
print('对tuple序列化后的内容进⾏反序列化:',json.loads(json.dumps(tuple1)))
print('反序列化后的类型:',type(json.loads(json.dumps(tuple1))))
print('----------------------------------')
print('对dict进⾏序列化:',json.dumps(dict1))
print('序列化后的类型:',type(json.dumps(dict1)))
print('对dict序列化后的内容进⾏反序列化:',json.loads(json.dumps(dict1)))
print('反序列化后的类型:',type(json.loads(json.dumps(dict1))))
print('----------------------------------')

执行结果:

----------------------------------
操作前的元list: [1, 2, 3, 4, 5, [True, None]]
操作前的元tuple: ('laobai', 'age', 'address')
操作前的元字典: {'name': 'laobai', 'age': 20, 'address': 'beijing'}
----------------------------------
对list进⾏序列化: [1, 2, 3, 4, 5, [true, null]]
序列化后的类型: <class 'str'>
对list序列化后的内容进⾏反序列化: [1, 2, 3, 4, 5, [True, None]]
反序列化后的类型: <class 'list'>
----------------------------------
对tuple进⾏序列化: ["laobai", "age", "address"]
序列化后的类型: <class 'str'>
对tuple序列化后的内容进⾏反序列化: ['laobai', 'age', 'address']
反序列化后的类型: <class 'list'>
----------------------------------
对dict进⾏序列化: {"name": "laobai", "age": 20, "address": "beijing"}
序列化后的类型: <class 'str'>
对dict序列化后的内容进⾏反序列化: {'name': 'laobai', 'age': 20, 'address': 'beijing'}
反序列化后的类型: <class 'dict'>
----------------------------------

json.dumpsjson.loads是针对数据类型(字典,元组,列表等)的

json.dumpjson.load是针对文件的

import json

list1=[1,2,3,4,5,[True,None]]

# 对list1进行序列化并保存到test1.json中
with open('test1.json',mode='wt',encoding='utf-8') as f:
    json.dump(list1,f)

# 读取test1.json中被序列化的json进行反序列化操作
with open('test1.json',mode='rt',encoding='utf-8') as f:
    l = json.load(f)
    print(l,type(l))

执行结果:

序列化的在当前目录生成一个test1.json文件,内容是:

[1, 2, 3, 4, 5, [true, null]]

反序列化的运行结果:

[1, 2, 3, 4, 5, [True, None]] <class 'list'>

Python与JSON之间数据类型对应关系

Python JSON
list,tuple array
dict Object
str string
int,float numbers
True true
False false
None null

文章作者: 老百
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 老百 !
  目录