json介绍、python数据和json数据的相互转换

目录

一 json介绍

json是什么?

用处

Json 和 XML 对比

各语言对Json的支持情况

Json规范详解

二 python数据和json数据的相互转换

dumps() : 转换成json

loads(): 转换成python数据

 总结


一 json介绍

json是什么?

实质上是一条字符串

是一种文本数据格式,
是一种文本规范
是一种字符串规范

用处

一般适合文本量不大,且需要记录树形结构的数据 或 需要灵活扩展数据

Json 和 XML 对比

Json文本
    更简洁易懂,对人更友好
    适合数据量不大,结构不复杂的场景 (如:后端接口的参数)
    比XML更小、更快、更易解析

XML 文本
    程序处理更方便,对机器更友好
    适合数据量大,结构复杂的场景(如:HTML是基于XML的)
 

各语言对Json的支持情况

1 Json实质上是一条字符串,程序中使用json,需要特定的方法转换为对象变量才能使用
2 Json是一种文本规范,各语言对Json的支持情况:
JavaScript:原生支持    √
Python:原生支持.import json   √
Java:原生不支持,需要引入Gson或FastJson
C++:原生不支持,引入Jsoncpp等库

Json规范详解

支持6种类型的值
1 字符串  如 "test String"    
    字符串中如果有双引号,需要使用\转义,如"test \" String"

2 数字  如 0.2 999 -1.1
    可以是整数、浮点数(小数)
    
3 布尔值 true false

4 null (空值)

5 对象 可嵌套数据,如 {"key1":"value1","key2":"value2"}
    包含在一对{}之内
    用,隔开多个键值对
    *键值对的 键 必须为字符串
    *键值对的 值 可以是6种值类型的任意一种,且无需统一类型
    {"key1":"value1","key2":true,"key3":{},"key4":23}

6 数组 可嵌套数据,如 ["value1","value2","value3"]
    包含在一对[]之内的
    单个数组内的多个值用,隔开
    数组内的值可以是Json支持的6种值的任意一种
    单个数组内的多个值无需统一类型

备注:
Json文本中多余的空格、换行不会有实质的影响,仅仅是为了方便阅读


二 python数据和json数据的相互转换

dumps() : 转换成json
import json
#准备列表
data=[{"姓名":"小明","年龄":"12"},{"姓名":"小红","年龄":"13"},{"姓名":"小李","年龄":"8"}]
#转换成json
# 有中文的时候加 ensure_ascii=False
json_str = json.dumps(data,ensure_ascii=False)
print(json_str)
print(type(json_str))
#准备字典
#转换成json
dic1={"水果":"西瓜","蔬菜":"胡萝卜","蛋白质":"牛肉"}
json_str2 = json.dumps(dic1,ensure_ascii=False)
print(json_str2)
print(type(json_str2))

 json实质上就是字符串str 

loads(): 转换成python数据
import json
#准备json数据
s1='[{"姓名":"小明","年龄":"12"},{"姓名":"小红","年龄":"13"},{"姓名":"小李","年龄":"8"}]'
#转换成列表
l1 = json.loads(s1)
print(l1)
print(type(l1))
#准备json数据
#转换成字典
s2='{"水果":"西瓜","蔬菜":"胡萝卜","蛋白质":"牛肉"}'
d1 = json.loads(s2)
print(d1)
print(type(d1))

 总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PAT乙级真题 / 知识点(1)

引言: 起初,报PAT是伙伴推荐。但在报名路途中,有朋友说,花时间到这上面不值得,还有学长说没听过,野鸡杯。 我一笑而过,我可能就是偏执,我就是想报。随着刷真题,我的基础…

单细胞分析(20)——inferCNV分析

InferCNV分析笔记 1. 分析目标 InferCNV(Inference of Copy Number Variations)是一种基于单细胞转录组数据推断**拷贝数变异(CNV)**的方法,推测其基因组变异情况。 2. 数据准备 2.1 载入数据 library(Seurat) set…

C++:多态与虚函数

1.虚函数,在函数前加virtual即可。有虚函数时,父类指针指向父类对象时就会使用父类的成员,指向子类对象时就可以使用子类成员,进而我们引入了多态的概念。 2.多态:父类指针指向子类的对象,通过父类指针调用…

WSL下使用git克隆失败解决

WSL默认nat模式,别动了防火墙放行,见图1git导入[bash1],ip为你wsl上linxu通过ifconfig获取的本机ip,端口对好某alcsh软件开启tun模式【经过测试,不开也行】应该成了,如果不行,修改.wslconfig为下…

开放鸿蒙OpenHarmony 5.0.0 Release 兼容性测试实战经验分享

OpenHarmony 5.0版本的发布时间是2024年12月20日至21日。这个版本带来了许多新特性和改进。现在5.0出了两个release 版本,分别是5.0.0和5.0.1。 就在5.0版本发布不到2周的时间内,2025年01月01日起,不支持新产品基于老分支(OpenHar…

C++中explicit关键字的含义以及用法

在C中,explicit关键字用于修饰构造函数和转换运算符(C11起),防止编译器进行隐式类型转换,要求必须显式调用构造函数或转换操作。以下是其核心用法和示例: 1. 修饰构造函数 用途 禁止隐式构造对象&#xf…

Oracle OCP认证考试考点详解083系列01

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 1. 第1题: 题目 解析及答案: 关于自动工作量存储库(AWR)快照,以下哪三个选项…

从DNS到TCP:DNS解析流程和浏览器输入域名访问流程

1 DNS 解析流程 1.1 什么是DNS域名解析 在生活中我们会经常遇到域名,比如说CSDN的域名www.csdn.net,百度的域名www.baidu.com,我们也会碰到IP,现在目前有的是IPV4,IPV6。那这两个有什么区别呢?IP地址是互联网上计算机…

《2025软件测试工程师面试》接口测试篇

基础概念 什么是接口测试? 接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统和内部系统之间以及各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理的过程,以及系统间的相互逻辑依赖关系等。 接口测试的优势是什么? 接口测试具有规范性与扩…

【PHP脚本语言详解】为什么直接访问PHP文件会显示空白?从错误示例到正确执行!

前言 作为一名开发者,你是否曾经遇到过这样的问题:写了一个PHP脚本,放到服务器根目录后,直接通过file:///路径访问却显示空白页面?而换成http://localhost却能正常显示?这篇文章将带你深入理解PHP脚本语言…

word转换为pdf后图片失真解决办法、高质量PDF转换方法

1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker (1)点击word选项卡上的Acrobat插件,(2)点击“首选项”按钮,(3)点击“高级配置”按钮(4)点…

基于PyTorch的深度学习2——逐元素操作,归并,比较,矩阵

以下为部分逐元素操作代码实例。 import torcht torch.randn(1, 3) t1 torch.randn(3, 1) t2 torch.randn(1, 3)#t0.1*(t1/t2) torch.addcdiv(t, 0.1, t1, t2)#计算sigmoid torch.sigmoid(t)#将t限制在[0,1]之间 torch.clamp(t,0,1)#t2进行就地运算 t.add_(2) 归并操作一般…

线程池的工作流程

线程池的工作流程主要包括任务提交、线程分配、任务执行和线程回收等环节,以下是对其详细的描述: 任务提交 当有任务需要执行时,用户通过线程池提供的提交方法,如execute()或submit()方法,将任务(通常是实现…

C++20 标准化有符号整数:迈向更可预测的整数运算

文章目录 一、背景:为什么需要标准化?二、2 的补码:原理与优势(一)2 的补码原理(二)2 的补码的优势 三、C20 的变化:明确 2 的补码四、如何利用这一特性优化代码(一&…

Libgdx游戏开发系列教程(1)——环境配置及demo运行

目录 环境 JDK环境 项目创建 1.下载gdx-setup.jar文件 2.填写信息,创建项目 demo运行步骤 1.修改gradle.properties 2.安装Build-Tool 3.运行 Libgdx游戏是基于Java的一款游戏引擎,可以发布Android,桌面端,Html,IOS等游戏,出名的《杀戮尖塔》也是用了此引擎制作的 本…

【jenkins配置记录】

全局工具配置: D:\Program Files\Java\jdk1.8.0_281 D:\Program Files\Git\bin\git.exe E:\allure-2.13.2 2. GIT 3. 定时任务 H 8 * * 1-5 4. 构建触发器 5. 构建后操作 Allure Report 吐血记录:报告路径可以为 workspace 相对路径 6. 系统配置 em…

C++:内联函数

内联函数可以用来降低运行时间,当内联函数收到编译器的指示时,即可发生内联:编译器会使用函数的定义体来替代函数调用语句,此行为发生在编译阶段。 定义内联函数涉及的关键字为inline,例如: inline void …

Linux网络相关概念和重要知识(1)(网络协议、网络通信)

目录 1.网络协议 (1)网络的起源 (2)为什么需要协议 (3)协议分层及其设计的解耦 (4)OSI定义的七层网络模型 ①分层及其功能 ②TCP/IP协议 ③传输层协议(TCP和UDP&a…

【入门Web安全之前端学习的侧重点和针对性的建议】

入门Web安全之前端学习的侧重点和针对性的建议 一、HTML:理解攻击载荷的载体二、CSS:次要但需警惕点击劫持三、JavaScript:渗透测试的核心重点四、浏览器工具:渗透测试的实战武器五、学习建议与资源六、总结:渗透测试者…

QILSTE H6-C210TCG高亮翠绿光LED灯珠 发光二极管LED

# H6-C210TCG:高亮翠绿光LED的复杂特性解析 在现代电子设备的复杂设计中,H6-C210TCG型号的高亮翠绿光LED以其独特的光学和电气特性脱颖而出。这款LED不仅具备紧凑的尺寸,还融合了复杂的参数设计,使其在众多应用场景中表现出色。然…