python json方法详解_python详解json模块

我们在做工作中经常会使用到json模块,今天就简单介绍下json模块

什么是json

JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它通过对象和数组的组合米表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。json模块在python中可以作为数据解析json

对象和数组

在JavaScript 语言中,一切都是对象。任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等,但是对象和数组是比较特殊且常用的两种类型

对象:它在JavaScript中是使用花括号{ }包裹起来的内容,数据结构为{ keyl : valuel,key2:value2}的键值对结构。在面向对象的语言中,key为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

数组:数组在JavaScript中是方括号[]包裹起来的内容,数据结构为[ ”java ” ,” javascript ”,"vb " ]的索引结构。在JavaScript中, 数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引用得多。同样,值的类型可以是任意类型。

JSON对象格式

会发现和我们的字典格式是不是特别的一样

# 格式为{"name":"value"}

[{"name":"AnJing","age":"26"

}]

JSON简单使用

loads()方法

使用方法loads()将 json文字转化成json对象

# coding:utf-8

import json

str = '''

[{

"name":"AnJing",

"age":"26"

}]

'''

data = json.loads(str)

print(data)

print(type(data))

print(data[0]['name']) # 通过下标进行选择

print(data[0].get('name'))

代码结果:

[{'name': 'AnJing', 'age': '26'}]

AnJing

AnJing

注意:在使用loads的时候json字符串必须要用双引号表示,否则会报错

(json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 12))

dumps()方法

使用dumps()方法将json转换成字符串

# coding:utf-8

import json

str = [{

"name":"AnJing",

"age":"26"

}]

print(type(str))

data = json.dumps(str)

print(type(data))

print(data)

代码结果:

[{"name": "AnJing", "age": "26"}]

另外如果想要保存的文字好看点,我们可以增加一个参数indent,代表缩进字符个数,已经可以写入中文的时候不会乱码,加入ensure_ascii=False

# coding:utf-8

import json

str = [{

"name":"安静",

"age":"26",

"性别":"男"

}]

# indent 表示缩进

# ensure_ascii=False 表示写入中文

with open('123.json','w',encoding='utf-8')as f:

f.write(json.dumps(str,indent=2,ensure_ascii=False))

代码结果:

[

{

"name": "安静",

"age": "26",

"性别": "男"

}

]

load()方法

将文件内容转换成json数据

# 导入json模块

import json

str = [{

"name":"AnJing",

"age":"26"

}]

# 通过dumps写入文件中

with open('123.json','w')as f:

f.write(json.dumps(str))

# 通过load将数据转换成json

data = json.load(open('123.json','r'))

print(data)

代码结果:

[{'name': 'AnJing', 'age': '26'}]

dump()方法

将json数据写入到文件中

# coding:utf-8

import json

str = [{

"name":"AnJing",

"age":"26"

}]

# 通过dump写入到json中

json.dump(str,open('123.json','w'))

# 通过load查看是否写入

data = json.load(open('123.json','r'))

print(data)

代码结果:

[{'name': 'AnJing', 'age': '26'}]

简单的写了写json模块的使用方法,以及json的简单介绍,欢迎继续补充没有涉及到的知识。

感觉写的对您有帮助的,点个关注不迷路~~~~

来源:

测试-安静

https://www.cnblogs.com/qican/

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

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

相关文章

iPhone 的 Push(推送通知)功能原理浅析

第一部分:Push原理(以下绝大多数内容参考自、图片来自iPhone OS Reference Library)机制简介Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器。 APNS 是Apple Push Notification Service(Apple Push服务器&…

关于C#异步编程的建议

基于任务的异步编程模型 (TAP) 提供了异步代码的抽象化。你只需像往常一样将代码编写为一连串语句即可。就如每条语句在下一句开始之前完成一样,你可以流畅地阅读代码。编译器将执行许多转换,因为其中一些语句可能会开始运行并返回表示正在进行的工作的 …

编程从业五年的十四条经验,句句朴实

全世界只有3.14 % 的人关注了数据与算法之美排列不分先后:1. 当性能遇到问题时,如果能在应用层进行计算和处理,那就把它从数据库层拿出来。排序和分组就是典型的例子。在应用层做性能提升总是要比在数据库层容易的多。就像对于MySQL&#xff…

hashmap扩容 面试_HashMap面试,看完这一篇就够了(上)

以下HashMap源码的解析都是基于java8来讲解的。HashMap的结构是数组加链表的形式(jdk7中也是),在java8中引入了红黑树,由于红黑树的时间复杂度是O(log n),引入红黑树是为了解决在哈希冲突很严重的时候导致链表太长,从而引起的查找…

动态更改屏幕方向LANDSCAPE与PORTRAIT 转

动态更改屏幕方向……LANDSCAPE与PORTRAITpackage irdc.ex05_22;import android.app.Activity;import android.content.pm.ActivityInfo;import android.os.Bundle;import android.view.Display;import android.view.View;import android.widget.Button;import android.widget.…

C# action,delegate,func的用法和区别

以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发现确实代码简洁了不少。这两种方式我…

java实现红包要多少钱_Java实现抢红包算法,附完整代码(公平版和手速版)

当我们在群里抢红包时真的是手速越快红包金额越大吗?答案当然是并不是,都说了是拼手气,岂能是拼手速!不过也可以有拼手速的方法二倍均值法(公平版)这是一种很合理很公平的抢红包算法了,绝对不会让你拼手速的&#xff0…

堆和栈概念整理

1.内存管理方式: 堆:一般由程序员分配释放,程序员申请时需要指明大小,leg,C语言中malloc函数:p1(char*)malloc(10),C中:p2new char[20].若程序员不去释放,当程序结束时可能由操作系统释放 &…

.Net之Swagger基础使用

介绍Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。日常可以用于后端开发人员测试接口或者前后端联调使用。从.net5开始,swagger已经集成到vs2019编译器中,可以通过勾对选项“启用OpenAPI支持”显示…

孩子不是笨,他和“最强大脑”差的是这个!

小木最近看到一则消息推送,说家长辅导孩子陪写作业简直就是一道“送命题”。朋友圈更是掀起了一股“提前嫁儿嫁女”的热潮。为什么孩子对数学一点兴趣也没有?为什么再简单的一道题,换个数字换个形式,孩子就一问三不会了&#xff1…

c++ 隐藏进程_Linux 查看进程的动态信息

前言top命令经常用来监控Linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况目录一、描述二、top命令常用字段含义三、top中的子命令四、总结五、思维导图一、描述1、top命令经常用来监控Linux的系统状况是常用的性能分析工…

给IT新人的15个建议:苦逼程序员的辛酸反省与总结

很多人表面上看着老实巴交的,实际上内心比谁都好强、自负、虚荣、甚至阴险。工作中见的多了,也就习惯了。 有一些人,什么事都写在脸上,表面上经常得罪人,甚至让人讨厌。但是他们所表现的又未必不是真性情。 我相信大多…

.net core针对async ()=的安全处理

最近在做一个功能需要传递一个委托作为回调逻辑处理,但在使用中定义了async ()>来处理awaiter逻辑那就存在一个安全问题了。了解async/awaiter的朋友一定清楚async void函数带来的致命风险!async void会阻断异常路由,即当前函数没有try的情…

这三道题,总有一道你是答不出来的

全世界只有3.14 % 的人关注了数据与算法之美大家好,我是最近过得不太舒心的卢sir。经常被小思妹提的各种奇葩数学题搞得云里雾里的。我一看数学题就想做,没想到这些题目都是奇葩中的奇葩,不是那写错就是这计算错。为了捍卫我最后的倔强&#…

前端对div连线_《前端图形学从入门到放弃》003 三维世界

从本篇起,我们将正式进入webgl的3D世界本篇涵盖的内容包括:webgl它在干啥?如何画一个正方体?如何成为一个“有深度”的正方体?正方体要离家出走了!webgl它在干啥?首先我们需要知道webgl的世界其…

为EasyUI 的Tab 标签添加右键菜单

近期研究了下MenuButton,有了新的感悟,原先在那个DEMO中右键支持做法,现在看来真是小儿科啊! 前期的准备工作: 1、下载DEMO源码,并升级为最新版本(jquery 1.7.2,Easyui 1.2.6),直接替换就可以啦…

C# Task 暂停与取消

前言:①取消task任务之CancellationTokenSource的用法;②task的线程管控方法Task..Wait(time),Task.WaitAll(), Task.WaitAny(),task.ContinueWith.1.声明参数CancellationTokenSource tokenSource new CancellationTokenSource(…

通过R,让你的数据分析更简便!

R作为一种统计分析软件,广泛应用于生物、医学、电商、新闻等数据相关行业,是目前主流数据应用软件之一。为了更好地帮助大家了解并快速入门R语言,现超级数学建模携手柯老师以R语言为基础,向大家隆重推出《R语言基础》系列课。柯老…

r语言用行名称提取数据框信息显示na_学会这些R语言技巧至少可以节省半年时间...

ubuntu备忘定期清空回收站扩增子数据牢记r ubuntu 相关技巧和备忘待解决问题1:phyloseq有一篇文章案例使用输入和输出文件相同的文件名,无法执行待解决问题2:待解决问题3:样品分组文件太长了,导致提取出来数据存在NA值…

hibernate.cfg.xml的一些事

Hibernate连接数据库的配置文件书写一般有两种方式: 第一种方式:使用开发环境直接连接数据库最后生成hibernate.cfg.xml文件 第二种方式:使用已有的模版直接拷贝的工作的目录下,通过相应的修改获得需要的连接数据库的配置文件&…