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

Json格式解析

文章目录

    • Json格式介绍
    • python中json模块的使用

Json格式介绍

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于语言的文本格式来存储和表示数据。JSON易于人阅读和编写,同时也易于机器解析和生成。

JSON格式的基本结构是基于两种类型的值:

简单值:这些包括字符串、数字、布尔值(true 或 false)、null、JSON数组(由方括号 [] 包围的值的列表)和JSON对象(由大括号 {} 包围的键值对的列表)。复合值:JSON对象和JSON数组可以用来组合简单值和复合值以创建更复杂的数据结构。

JSON对象

JSON对象是一个无序的键值对集合,其中每个键都是一个字符串,每个值都可以是一个简单值或另一个JSON对象或JSON数组。

{"key1": "value1","key2": 123,"key3": true,"key4": null,"key5": [1, 2, 3],"key6": {"nestedKey1": "nestedValue1","nestedKey2": "nestedValue2"}
}

JSON数组

JSON数组是一个有序的值列表,用方括号包围。数组中的每个值都可以是一个简单值或另一个JSON对象或JSON数组。

["value1",123,true,null,{"key1": "value1","key2": "value2"},[1, 2, 3]
]

字符串

JSON中的字符串必须使用双引号(")包围,而不是单引号(')。

{"name": "John Doe","greeting": "Hello, world!"
}

数字

JSON支持整数和浮点数。

{"age": 30,"score": 9.8
}

布尔值

JSON中的布尔值只能是 true 或 false。

{"isStudent": true,"hasGraduated": false
}

Null

JSON中的 null 值表示空或不存在的值。

{"address": null
}

JSON格式简洁清晰,易于阅读和编写,因此在Web开发中广泛用作前后端数据交换的格式。在Python、JavaScript、Java、C#等许多编程语言中都有现成的库或函数来处理JSON数据的编码(序列化)和解码(反序列化)。

python中json模块的使用

在Python中,json模块是用于处理JSON数据的标准库。你可以使用它来将Python对象编码(或序列化)成JSON格式的字符串,也可以将JSON格式的字符串解码(或反序列化)成Python对象。以下是json模块的一些基本用法示例:
编码(序列化)

将Python对象(如字典、列表、字符串、数字等)转换为JSON格式的字符串。

import json# Python字典
data = {"name": "John","age": 30,"city": "New York"
}# 使用json.dumps()将Python对象编码为JSON字符串
json_string = json.dumps(data)print(json_string)
# 输出: {"name": "John", "age": 30, "city": "New York"}# 你可以使用参数来定制输出的JSON字符串,比如缩进以增加可读性
pretty_json_string = json.dumps(data, indent=4)print(pretty_json_string)
# 输出:
# {
#     "name": "John",
#     "age": 30,
#     "city": "New York"
# }

解码(反序列化)

将JSON格式的字符串转换为Python对象(如字典、列表等)。

import json# JSON字符串
json_string = '{"name": "John", "age": 30, "city": "New York"}'# 使用json.loads()将JSON字符串解码为Python对象
data = json.loads(json_string)print(data)
# 输出: {'name': 'John', 'age': 30, 'city': 'New York'}# 你可以看到解码后的数据是一个Python字典
print(type(data))
# 输出: <class 'dict'># 如果JSON字符串表示一个数组,解码后将得到Python列表
json_array_string = '[1, 2, 3, "four"]'
data_array = json.loads(json_array_string)print(data_array)
# 输出: [1, 2, 3, 'four']

写入文件

将Python对象编码为JSON格式,并写入到文件中。

import jsondata = {"name": "John","age": 30,"city": "New York"
}# 使用with语句打开文件,并将数据写入到文件中
with open('data.json', 'w') as f:json.dump(data, f)

从文件读取

从文件中读取JSON数据,并解码为Python对象。

import json# 使用with语句打开文件,并读取数据
with open('data.json', 'r') as f:data = json.load(f)print(data)
# 输出: {'name': 'John', 'age': 30, 'city': 'New York'}

错误处理

当处理JSON数据时,可能会遇到格式错误或无法序列化的对象。为了避免程序崩溃,你可以使用try和except语句来捕获可能抛出的异常。

import jsontry:# 尝试解码一个格式错误的JSON字符串data = json.loads('{"name": "John", "age": "thirty"}')
except json.JSONDecodeError as e:print(f"解码错误: {e}")try:# 尝试序列化一个无法序列化的对象,如包含datetime的复杂对象complex_data = {"name": "John", "timestamp": datetime.datetime.now()}json.dumps(complex_data)
except TypeError as e:print(f"序列化错误: {e}")

在使用json模块时,确保你的数据是可以被序列化的,并且JSON字符串的格式是正确的,否则你可能会遇到错误。

http://www.lryc.cn/news/321713.html

相关文章:

  • Java Day13 多线程
  • 以太坊的演变:EIP、ERC 概念以及革命性的 ERC20、ERC721 和 ERC115 标准
  • B003-springcloud alibaba 服务治理 nacos discovery ribbon feign
  • mac笔记本执行定时任务
  • 解决linux系统网卡加载慢的问题
  • Linux 命令或者一些工具
  • 基于python的4s店客户管理系统
  • 解决谷歌浏览器最新chrome94版本CORS跨域问题
  • JAVA 线程
  • Rust 基于 await、async 的异步编程和纤程、协程的实现
  • 【进阶五】Python实现SDVRP(需求拆分)常见求解算法——差分进化算法(DE)
  • 什么是神经网络?
  • 基于Python的图形用户界面设计及应用
  • python网络爬虫实战教学——urllib的使用(1)
  • 简述归并排序
  • HTML实现卷轴动画完整源码附注释
  • sh: 1: dtc: not found
  • laravel 表单验证的 exists、unique 去除软删除字段的校验
  • 【PHP + 代码审计】函数详解2.0
  • 宠物智能喂食机方案设计
  • 测试直播打赏需要考虑哪些测试要点?
  • Python练习(续)
  • 发布镜像到阿里云仓库
  • web蓝桥杯真题:灯的颜色变化
  • 通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)
  • 算法打卡day21|回溯法篇01|理论知识,Leetcode 77.组合
  • C++ 输入输出
  • FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS图像缩放+多路视频拼接,提供4套工程源码和技术支持
  • 【gpt实践】50个提升工作效率的GPT指令
  • 基于Springboot的高校竞赛管理系统(有报告)。Javaee项目,springboot项目。