16. JSON解析

news2024/12/28 21:42:57

1. 什么是 JSON ?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是轻量级的文本数据交换格式
JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
 JSON 具有自我描述性,更易理解。

JSON 比 XML 更小、更快,更易解析
 JSON 易于人阅读和编写。
 python、c++、java、php、go等编程语言都支持 JSON。

这么说吧,现在流行的数据交互格式都是JSON,其独占鳌头,XML比起JSON来说那就少的可怜了
关于JSON语法,可自行百度,非常简单,很快便可掌握,此处不再赘述。

2. python中对json的支持

(1) python标准库的 json 模块提供了对 json 的支持
[a]. 把字符串转换成 JSON 对象;
[b]. 把 JSON 对象换成字符串。
(2) 常用的接口
json.dumps(obj) 将 JSON 对象转换成字符串
json.loads(obj) 将字符串转换成 JSON 对象
json.dump(obj,file) 将 JSON 对象转换成字符串,并写入到文件中
json.load(file) 读取文件中的字符串,转换成 JSON 对象
(3) python 编码为 JSON 类型转换对应表

pythonJSON
dictobject
list、tuplearray
strstring
int,float,int,float,Enumsnumber
Truetrue
Falsefalse
Nonenull

(4) JSON 解码为 python 类型转换对应表

JSONpython
objectdict
arraylist
stringstr
number(int)int
number(real)float
trueTrue
falseFalse
nullNone

3. 接口使用

(1) dumps(obj)
  将 JSON 对象转换成字符串

import json

# json对象
jsonObj = {
    'num': 101,
    'name': 'Zhang'
}

# 将json对象转换为字符串
print(type(json.dumps(jsonObj)))
print(json.dumps(jsonObj))

在这里插入图片描述
(2) loads(str)
  将字符串转换成 JSON 对象

import json

string = '{"num": 101, "name": "zhang"}'

print(type(json.loads(string)))
print(json.loads(string))

在这里插入图片描述
(3) json.dump(obj,file)
  将 JSON 对象转换成字符串,并写入到文件中

import json

# 运行程序, 发现在当前目录下已经生成了test.json文件,
# 并且已经将自定义的json对象写入到了文件当中
file = open('test.json', 'w')
jsonObj = {'num': 101, 'name': 'Zhang'}
json.dump(jsonObj, file)
file.close()

在这里插入图片描述

(4) json.load(file)
  将读取文件中的字符串,转换成 JSON 对象

import json

file = open('test.json')
jsonObj = json.load(file)
print(jsonObj)
print(jsonObj['num'])
print(jsonObj['name'])
file.close()

在这里插入图片描述

4. 写在最后

更多基于python的Json接口可参考官网:
https://docs.python.org/3.9/library/json.html

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

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

相关文章

Kettle基础操作

目录 Kettle基础操作 1 启动Kettle 2 创建本地资源库 3 基础操作 3.1 新建转换 3.2 新建作业 3.3 节点连接 4 导入/导出资源库 5 创建数据库连链接 Kettle基础操作 1 启动Kettle 前置环境:JDK 1.7以上、IE浏览器升级至IE10以上(Kettle7.0以下…

Java——打家劫舍

题目链接 leetcode在线oj题——打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入&#xff…

Hive数仓建设手册

1 数仓的分层及建模理论 1.1 数据仓库的用途 整合公司所有业务数据,建立统一的数据中心产生业务报表,用于作出决策为网站运营提供运营上的数据支持可以作为各个业务的数据源,形成业务数据互相反馈的良性循环分析用户行为数据,通…

MySQL中的正则表达式

目录 一.介绍 二.格式 三.操作 一.介绍 正则表达式(regular expression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正…

5G小区选择重选参数的设置

学习大唐杯的过程中的一些总结。 目录 前言 一、S准则 二、R准则 三、关于频点优先级 总结 前言 5G参数总体的设计思想是在总体成本的控制下,满足覆盖范围和容量的同时,达到5G各个小区之间正确进行通信。 一、S准则 在后续介绍的频点优先级中&#xff0…

【多任务】任务损失/梯度优化策略合集

本文分享如何从loss和gradient方面,优化多任务模型,缓解负迁移或跷跷板的问题。不足之处,还望批评指正。 背景 最近工作中,有使用到多任务模型,但实际使用时,会面临负迁移、跷跷板等现象。 除了从模型角度优化,这里介绍从loss和gradient方面的优化

SpringBoot创建接口

目录 一、创建Spring Boot Project (一)配置Spring Boot (二)配置数据库连接,并启动tomcat 二、新建测试网页——这一步可以忽略,主要是测试配置是否成功 1.新建一个页面 2.创建TestController类 3.启动SpringbootpracticeApplication类——sprin…

【Linux】makemakefile

【Linux】make & makefile 文章目录【Linux】make & makefile1、makefile文件2、make命令3、make原理规则4、.PHONY5、编译与否的判断法1、makefile文件 makefile实际上是一个文件,配置文件 充当Linux上的工程管理工具,可以实现自动化编译 mak…

transformer库的思想

transformer库建立思路 (1) Model类: 如BertModel , 目前收录有超过30个PyTorch模型或Keras模型; (2) Configuration类: 如BertConfig , 用于存储搭建模型的参数; (3) Tokenizer类: 如BertTokenizer , 用于存储分词词汇表以及编码方式; 使用from_pretrained()和save_pretraine…

区块链知识系列 - 系统学习EVM(二)

特点 EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数。不支持浮点数缺乏标准库支持,例如字符串拼接、切割、查找等等都需要开发者自己实现给合约打补丁或是部分升级合约代码在EVM中是完全不可能的 存储 Code code 部署合约时储存 data 字段也就是合…

08-linux网络管理-iptables扩展模块

文章目录1. 概述2. icmp 模块2.1 示例(禁止本机ping其它主机)2.2 示例(其他主机ping本机)2.3 --icmp-type 说明3. iprange模块4. multiport 模块5. state 模块5.1 语法5.2 完整示例6. limit模块6.1 语法6.2 完整示例7. connlimit7…

[2019红帽杯]easyRE1题解

迷蒙马背眠,月随残梦天边远,淡淡起茶烟。 ——松尾芭蕉 目录 1.查壳 2.拖入64位IDA,找到主函数 3.静态分析主函数 4.wp 1.查壳 ELF文件,64bit 2.拖入64位IDA,找到主函数 没有标明main函数,我们打开str…

OSCP_VULHUB COVFEFE: 1

文章目录前言信息收集渗透过程权限提升前言 靶机下载地址:https://www.vulnhub.com/entry/covfefe-1,199/ 攻击机:kali(192.168.132.139) 靶机:covfefe(192.168.132.146) 下载好靶机之后直接使…

vivo 超大规模消息中间件实践之路

作者:vivo 互联网存储技术团队-Luo Mingbo、中间件团队- Liu Runyun 本文根据“2022 vivo开发者大会"现场演讲内容整理而成。 本文主要介绍超大数据规模场景下分布式消息中间件在vivo的应用实践。 在线业务侧主要从RocketMQ集群部署架构、平台系统架构、日常运…

EMC基础:电容的频率特性

本文将对其中使用电容和电感降噪的对策进行介绍,这也可以称为“噪声对策的基础”。在这里使用简单的四元件模型。如果要进一步表达高频谐振时,可能需要更多的元件模型。 电容的频率特性 探讨利用电容器来降低噪声时,充分了解电容器的特性是…

设计模式——软件设计原则

目录 3.软件设计原则 3.1 开闭原则 3.2 里氏代换原则 3.3 依赖倒转原则 3.4 接口隔离原则 3.5 迪米特法则 3.6 合成复用原则 3.软件设计原则 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要…

8、Servlet——Servlet生命周期、Servlet特性

目录 一、Servlet生命周期 1、生命周期的四个阶段 1.1 实例化 1.2 初始化 1.3 服务 1.4 销毁 2、Servlet执行流程 3、代码演示 二、 Servlet特性 1、线程安全问题 2、如何保证线程安全 一、Servlet生命周期 1、生命周期的四个阶段 1.1 实例化 当用户第一次访问Ser…

flutter裁剪三角形,并设置三角形最长边阴影(类似钉钉登录页右上角图标样式)

需求 需要使用flutter创建类似钉钉登录页右上角图表样式 过程 图标 图标直接从阿里巴巴图标库中下载png文件,并设置相应颜色 三角形阴影 样式的主要难点在三角形及三角形阴影这里 1、三角形的裁剪有两种方法: 第一种是 使用边框实现三角形 参考博客…

springboot自动加载--自定义启动器

创建自定义启动器 0、项目总览 1、创建项目&#xff0c;引入依赖 创建项目 spring-boot-jdbc-starter&#xff0c;引入依赖&#xff0c;pom文件如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apa…

b站黑马Vue2后台管理项目笔记——(1)登录功能

说明&#xff1a; 此项目中使用的是本地SQL数据库&#xff0c;Vue2。 其他功能请见本人后续的其他相关文章。 本文内容实现的最终效果如下图&#xff1a; 目录 一&#xff0e;登录功能的实现 1.登录页面的布局&#xff1a; &#xff08;1&#xff09;查看当前工作区是否干净…