python json 不好用_Python之json使用

一、概念

json是一种通用的数据类型,任何语言都认识

接口返回的数据类型都是json

长得像字典,形式也是k-v { }

其实json是字符串

字符串不能用key、value来取值,要先转成字典才可以

格式如下:

{"error_code": 0,#要使用双引号,如果是单引号则运行时会报错,可以上网做在线json格式校验

"stu_info": [

{"id": 309,"name": "小白","sex": "男","age": 28,"addr": "河南省济源市北海大道32号","grade": "天蝎座","phone": "18512572946","gold": 100},

{"id": 310,"name": "小白","sex": "男","age": 28,"addr": "河南省济源市北海大道32号","grade": "天蝎座","phone": "18516572946","gold": 100}

]

}

二、json操作

1、json串转成字典:

(1).loads()方法

import json#引用json模块

res=json.loads(s)print(res)#打印字典

print(type(res))#打印res类型

print(res.keys())#打印字典的所有Key

要先读文件,然后再转换:

f=open('stus.json',encoding='utf-8')

content=f.read()#使用loads()方法,需要先读文件

user_dic=json.loads(content)print(user_dic)

(2).load()方法

importjson

f=open('stus.json',encoding='utf-8')

user_dic=json.load(f)print(user_dic)

(3)区别

loads()传的是字符串,而load()传的是文件对象

使用loads()时需要先读文件再使用,而load()则不用

2、字典转成json串:

文件里只能写字符串,但可以把字典转成json串,json串是字符串,可以存到文件里

(1).dumps()方法

stus={'xiaojun':'123456','xiaohei':'7891','abc':'11111'}#先把字典转成json

res2=json.dumps(stus)print(res2)#打印字符串

print(type(res2))#打印res2类型

.dumps()方法:把字典转成json串

with open('stus.txt','w',encoding='utf-8' as f:#打开文件

f.write(res2)#在文件里写入转成的json串

使用.dumps()方法前,要先打开文件,再写入:

stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}

res2=json.dumps(stus,indent=8,ensure_ascii=False)print(res2)

with open('stus.json','w',encoding='utf-8') as f:#使用.dumps()方法时,要写入

f.write(res2)

(2)dump()方法

stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}

f=open('stus2.json','w',encoding='utf-8')

json.dump(stus,f,indent=4,ensure_ascii=False)

(3)区别

.dump()不需要使用.write()方法,只需要写哪个字典、哪个文件即可;而.dumps()需要使用.write()方法写入

如果要把字典写到文件里面的时候,dump()好用;但如果不需要操作文件,或需要把内容存到数据库和Excel,则需要使用dumps()先把字典转成字符串,再写入

(4)dump\dumps参数

.dumps\dump中使用参数indent,为字符串换行+缩进:

res2=json.dumps(stus.indent=4)print(res2)#打印字符串#结果为:

'''{

"xiaojun": "123456",

"xiaohei": "7891",

"lrx": "hailong",

"tanailing": "111111"

}'''

.dumps\dump中使用参数ensure_ascii,为内容输出为中文:

res2=json.dumps(stus,indent=4,ensure_ascii=False)#为False时内容输出显示正常的中文,而不是转码

print(res2)

3、不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。

1、pycharm使用小技巧之分屏:

在python文件上右键——Split Vertically,即可达到分屏效果:

3345a2e3dc86fc64591fa6c1edee28a6.png

2、pycharm使用小技巧之颜色渲染:

文件为.json结尾时,输出的内容会有染色渲染:

a5b88464921241d563d7a0cbe4db5381.png

with open('stus.json','w',encoding='utf-8' as f:#打开文件

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

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

相关文章

jstack命令(Java Stack Trace)

转:http://blog.csdn.net/fenglibing/article/details/6411940 JDK内置工具使用 一、javah命令(C Header and Stub File Generator) 二、jps命令(Java Virtual Machine Process Status Tool) 三、jstack命令(Java Stack Trace) 四、jstat命令(Java Virtual Machine …

EJB继承与Java继承不同

尽管EJB继承有时使用Java继承,但它们并不总是相同的。 就像您在我以前的文章中可以读到的那样 ,EJB不必实现任何接口即可公开业务接口。 另一种方法也是正确的-仅仅是因为EJB实现了某个接口或扩展了其他EJB并不意味着它公开了全部或任何视图。 假设我们…

信号量

信号量Semaphore初探 1.信号量(Semaphore)简述 信号量Semaphore是java.util.concurrent包下一个常用的同步工具类,他维护了一个许可集,可以理解成资源数,可以通过aquire操作来获取一个资源, 并通过release来释放一个资源,但需要注意的是,release来释放资源前不一定要先通过acqu…

(2017.9.27) 自定义列表项 list-style 使用心得

今天给某公司做招聘专页。早上完成设计图&#xff0c;下午开始排版。页面套用了我之前做的某人才局的招聘页面&#xff0c;导航栏、banner 很快就出来了。这次内容里我有些地方用了列表&#xff0c;当然要用 <ul> <li> 标签。列表项&#xff08;小圆点&#xff09;…

链式存储mysql_链栈:栈的链式存储结构

前面讲完了栈的顺序存储结构&#xff0c;我们现在来看看栈的链式存储结构&#xff0c;简称为链栈。链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。栈是用栈顶来做插入和删除操作&#xff0c;那么对于链栈的栈顶放在链表的头部还是尾部呢&#xff1f;单链…

树状数组 学习笔记

树状数组可以用来求区间元素的和。与前缀和做法不同&#xff0c;它支持值的修改。比如说&#xff0c;现在我有一个数列a&#xff0c;要求你维护这个数列&#xff0c;使其支持两个操作。1.改变数列第k项的值2.查询从第i项到第j项的总值暴力做法总是过不了所有点的&#xff0c;如…

使用Spring Security添加RememberMe身份验证

我在“ 将社交登录添加到Jiwhiz博客”中提到&#xff0c;RememberMe功能不适用于Spring Social Security。 好吧&#xff0c;这是因为该应用程序现在不通过用户名和密码对用户进行身份验证&#xff0c;并且完全取决于社交网站&#xff08;例如Google&#xff0c;Facebook和Twit…

iOS动画-从UIView到Core Animation

首先&#xff0c;介绍一下UIView相关的动画。 UIView普通动画&#xff1a;[UIView beginAnimations: context:];[UIView commitAnimations]; 动画属性设置&#xff1a; 1 //动画持续时间2 [UIView setAnimationDuration:(NSTimeInterval)];3 //动画的代理对象4 …

视觉表现理论知识

本文地址&#xff1a;http://www.cnblogs.com/veinyin/p/7606714.html 终于可以知道视觉表现的实现方式&#xff0c;而不是一个一个的具体实现了&#xff0c;突然感到自己能够把握页面的整体布局了呢&#xff0c;似乎学到了表现背后的东西&#xff1f; 以下是一个突然发现自己…

java jnlp_java – 调试JNLP启动应用程序

解决方案#1 – 启用Java控制台,并查找异常.您可以通过Java控制面板完成.切换到“高级”选项卡,然后在Java控制台中确保选中“显示控制台”.然后,运行您的应用程序并监视控制台以查找异常.修复异常.解决方案#2 – 调试正在运行的应用程序(正确).像这样启动Web Start应用程序(适用…

201621123055《JAVA程序设计》第三周学习总结

1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词。 答&#xff1a;类、对象、关键字等。1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。(注&#xff1a;首次使用&#xff0c;不太会用软件&#xff09; 2. 书面作业 1.以面向对象方式改造数据结构…

通过运行示例从WSO2 ESB开始

我最近加入了一个新任务&#xff0c;在该任务中&#xff0c;我们必须基于WSO2工具栈实施ESB解决方案。 尽管我熟悉ESB的大多数概念以及其他一些实现&#xff08;例如Mule ESB &#xff09;&#xff0c;但这是我第一次必须使用WSO2 ESB 。 幸运的是&#xff0c;可以找到很多文档…

爬虫(十二):scrapy中spiders的用法

Spider类定义了如何爬去某个网站&#xff0c;包括爬取的动作以及如何从网页内容中提取结构化的数据&#xff0c;总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request&#xff0c;并设置回调函数&#xff0c;当该request下载完毕并返回时&…

position:fixed 兼容浏览器低版本

项目中遇到的坑&#xff0c;写篇博客做个笔记纪念下&#xff0c;position: fixed一般来说都兼容各个浏览器&#xff0c;但是要兼容浏览低版本问题&#xff0c;就得用-webkit-transform: translateZ(0);这段代码了。 项目中用到position: fixed;z-index: xxx;的时候&#xff0c;…

一些关于博主的xibusana

博主就是OI强省GD内偏远小渔村的咸鱼一条&#xff0c;雄性 高一开始入OI坑&#xff0c;从此走上了爆零和%大佬的不归路。 由于我的ID略多&#xff0c;所以你在网上可能找不到我哦v 2018/9/17 博主现在是一条走高考路的高三狗啊qvq 博客比较少上了&#xff0c;现在的目标还是考上…

监控java_Java应用程序监控JavaMelody

JavaMelody是运行在Java Web容器中&#xff0c;用来监控Java内存和J服务器CPU使用情况&#xff0c;用户Session数量&#xff0c;JDBC连接数&#xff0c;和http请求、sql请求等的执行数量&#xff0c;平均执行时间&#xff0c;错误百分比等。图表可以按天&#xff0c;周&#xf…

Heroku和Java –从新手到初学者,第1部分

最近&#xff0c;我听说Heroku允许在Cedar堆栈中部署Java应用程序。 由于没有真正的软件构想&#xff0c;我决定尝试一下&#xff0c;仅将SOMETHING配置为可在Heroku上运行。 我对ReST有一些迷恋&#xff08;我仍然想学习并练习&#xff09;&#xff0c;所以我决定我的第一个应…

【谈谈IO】BIO、NIO和AIO

BIO: BIO是阻塞IO&#xff0c;体现在一个线程调用IO的时候&#xff0c;会挂起等待&#xff0c;然后Thread会进入blocked状态&#xff1b;这样线程资源就会被闲置&#xff0c;造成资源浪费&#xff0c;通常一个系统线程数是有限的&#xff0c;而且&#xff0c;Thread进入内核态也…

css动画-模拟正余弦曲线

今天就写一个css3抛物线的动画吧 从左到右的抛物线动画&#xff0c;我们就暂且把动作分为匀速向右运动和变速的上下运动。 水平匀速运动我们可以利用 translateX(x)&#xff1a;定义 2D 转换&#xff0c;沿着 X 轴移动元素&#xff1b;以及linear&#xff1a;动画从头到尾的速…

UVA-11549 Calculator Conundrum

InputThe first line of the input contains an integer t (1 ≤ t ≤ 200), the number of test cases. Each test casecontains two integers n (1 ≤ n ≤ 9) and k (0 ≤ k < 10 n ) where n is the number of digits this calculatorcan display k is the starting num…