一、概念

  • json是一种通用的数据类型,任何语言都认识
  • 接口返回的数据类型都是json
  • 长得像字典,形式也是k-v { }
  • 其实json是字符串
  • 字符串不能用key、value来取值,要先转成字典才可以
  • 格式如下:
{
"error_code": 0,#要使用双引号,如果是单引号则运行时会报错,可以上网做在线json格式校验
"stu_info": [
{
"id": 309,
"name": "小白",
"sex": "男",
"age": 28,
"addr": "河南省济源市北海大道32号",
"grade": "天蝎座",
"phone": "",
"gold": 100
},
{
"id": 310,
"name": "小白",
"sex": "男",
"age": 28,
"addr": "河南省济源市北海大道32号",
"grade": "天蝎座",
"phone": "",
"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()方法

import json
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':'','xiaohei':'','abc':''}
#先把字典转成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':'','xiaohei':'','lrx':''}
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':'','xiaohei':'','lrx':''}
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,即可达到分屏效果:

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

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

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

Python之json使用的更多相关文章

  1. Json概述以及python对json的相关操作

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  2. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  3. python 序列化 json pickle

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  4. Python处理json格式的数据文件(一些坑、一些疑惑)

    这里主要说最近遇到的一个问题,不过目前只是换了一种思路先解决了,脑子里仍然有疑惑,只能怪自己太菜. 最近要把以前爬的数据用一下了,先简单的过滤一下,以前用scrapy存数据的时候为了省事也为了用一下它 ...

  5. Python处理JSON

    从开源中国的博客搬来,合并博客 一.JSON是什么? JSON是一种轻量级的数据交换格式 二.Python处理JSON的思维 其实很容易理解,无非是将数据编成JSON格式数据和吧JSON格式的数据解析 ...

  6. Python处理JSON数据

    python解析json时为了方便,我们首先安装json模块,这里选择demjson,官方网址是:http://deron.meranda.us/python/demjson/ 访问之后点击页面的的D ...

  7. Json概述以及python对json的相关操作(转)

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  8. python 格式化 json输出

    利用python格式化json 字符串输出. $ echo '{"json":"obj"}' | python -m json.tool 利用python -m ...

  9. python解析json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 引用 import json 编码:把一个Python对象编码转换成Json字符串 json.dumps ...

  10. python 解析json loads dumps

    认识 引用模块 重要函数 案例 排序 缩进参数 压缩 参考 认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standa ...

随机推荐

  1. js获取select选中的内容

    ### 获取select选中的内容 js获取select标签选中的值 var obj = document.getElementById("selectId");//获取selec ...

  2. 《Java大学教程》—第20章 文件处理

    记录():一个单独的数据实例.域():一个属性. 20.3    输入和输出设备:P484输入过程和输出过程.操作系统负责建立三个流(stream):标准输入流(System.in).标准输出流(Sy ...

  3. 《Java大学教程》—第9章 软件质量

    软件质量:可维护性.可靠性.健壮性.可用性. 9.3 可维护性系统维护(maintaining)是指根据需求的变化更新现有系统的过程 9.3.1    封装的重要性连锁反应:对系统某一部分的改变可能会 ...

  4. node.js—File System(文件系统模块)

    文件系统模块概述 该模块是核心模块,提供了操作文件的一些API,需要使用require导入后使用,通过 require('fs') 使用该模块 文件 I/O 是由简单封装的标准 POSIX 函数提供的 ...

  5. 大学?做码农?做project师?

        近期看到一个知乎里非常热闹的讨论.当中讨论到科研能力与project能力,我有非常多感想. 想说说大学CS方向的一些东西.     我不是计算机专业的,如今大二本科工科在读.     我接触编 ...

  6. centos7下kubernetes(3。部署kubernetes)

    环境:三个centos7 K8s2是Master;K8s1是node1:K8s3是node2 官方文档:https://kubernetes.io/docs/setup/independent/ins ...

  7. UVA1616-Caravan Robbers(二分)

    Problem UVA1616-Caravan Robbers Accept: 96  Submit: 946Time Limit: 3000 mSec Problem Description Lon ...

  8. 文本分类实战(一)—— word2vec预训练词向量

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  9. 3D打印社区

    http://mc.dfrobot.com.cn/forum.php?mod=forumdisplay&fid=100&filter=typeid&typeid=9

  10. python3 列表/字典/集合推导式

    '''列表推导式[结果 fox循环 if语句]'''lst = ["Python周末%s期" % i for i in range(1, 27) if i%2 == 0]print ...