【python】JSON快速使用

文章目录

1、什么是JSON

  • json全名叫javaScript 对象表示法(J avaS cript O bject Notation)
  • JSON是轻量级的文本数据交换格式
  • JSON独立语言
  • json具有自我描述性,更易理解
  • json比xml更小、更快,更易解析

2、JSON标准库的作用

  • 使用json字符串生成python对象(load)
  • 由python对象格式化称为json字符串(dump)

3、python和json数据类型转换

将数据从python 转换到json格式,数据类型上会有变化

python json
dict object
list,tuple array
str string
int,float&float-derived Enums number
True true
False false
None null

4、json使用

json模块使用简单,绝大多数场合下,我们只需要使用下面四个方法就可以了

  • json.dump(obj,fp)将python 数据类型转换并保存到json格式的文件内
  • json.dumps(obj)将python数据类型转换为json格式的字符串
  • json.load(fp)从json格式的文件中读取数据并转换程python类型
  • json.loads(s)将json格式的字符串转化为python的类型

4.1、从python 对象格式化一个Json String

python 复制代码
person = {"name":"ZS","age":30,"tel":['17788866677','19988866645'],"isonly":True}
print(type(person))
print(person)

jsonStr = json.dumps(person,indent=4,sort_keys=True)#对key进行排序
print(type(jsonStr))
print(jsonStr)

【output】

bash 复制代码
<class 'dict'>
{'name': 'ZS', 'age': 30, 'tel': ['17788866677', '19988866645'], 'isonly': True}
<class 'str'>
{
    "age": 30,
    "isonly": true,
    "name": "ZS",
    "tel": [
        "17788866677",
        "19988866645"
    ]
}

4.2、写入.json文件

bash 复制代码
with open('data.json','w') as fp:
    json.dump(person,fp,indent=4)

4.3、Json String 转化成python 对象

python 复制代码
print(type(pythonObj))
print(pythonObj)
s = '["a",1,"AGE",{"F":true,"l":"na"}]'
pythonObj = json.loads(s)
print(type(pythonObj))
print(pythonObj)

【output】

bash 复制代码
<class 'dict'>
{'age': 30, 'isonly': True, 'name': 'ZS', 'tel': ['17788866677', '19988866645']}
<class 'list'>
['a', 1, 'AGE', {'F': True, 'l': 'na'}]

4.4、读取.json文件

python 复制代码
with open('data.json','r') as fp:
    pyObj = json.load(fp)
print(pyObj)
相关推荐
z***y86210 分钟前
Java数据挖掘开发
java·开发语言·数据挖掘
程序员爱钓鱼24 分钟前
Python 编程实战 · 进阶与职业发展:数据分析与 AI(Pandas、NumPy、Scikit-learn)
后端·python·trae
软件开发技术深度爱好者29 分钟前
Python库/包/模块管理工具
开发语言·python
bubiyoushang88836 分钟前
基于MATLAB的自然图像梯度分布重尾特性验证方案
开发语言·matlab
程序员爱钓鱼37 分钟前
Python 编程实战 · 进阶与职业发展:Web 全栈(Django / FastAPI)
后端·python·trae
MSTcheng.1 小时前
【C++STL】priority_queue 模拟实现与仿函数实战
开发语言·c++
小年糕是糕手1 小时前
【C++】C++入门 -- inline、nullptr
linux·开发语言·jvm·数据结构·c++·算法·排序算法
郝学胜-神的一滴1 小时前
Python中一切皆对象:深入理解Python的对象模型
开发语言·python·程序人生·个人开发
csbysj20202 小时前
JSP 隐式对象
开发语言
星期天22 小时前
3.2联合体和枚举enum,还有动态内存malloc,free,calloc,realloc
c语言·开发语言·算法·联合体·动态内存·初学者入门·枚举enum