json 通用的数据类型, 所有的语言都认识。json 是字符串。key-value 必须使用双引号
1. loads() 和 dumps() 的使用
  • json.loads() 将 json 字符串转换成字典。
  • json.dumps() 将字典转换成 json 字符串。
 s = '''{
"error_code":0,
"stu_info":[
{
"id":100,
"name":"小明"
},
{
"id":202,
"name":"小黑"
}
]
}
'''
# json格式校验网址 www.bejson,com
import json
res = json.loads(s) # json 字符串转成字典
print(res)
print(type(res)) stus = {'test1':'', 'test2':'', '中文':'中文test'}
res2 = json.dumps(stus, ensure_ascii=False) # 字典转成 json. 如果有中文,设置ensure_ascii=False
print(res2)
print(type(res2))
res3 = json.dumps(stus, indent=4) # indent 设置缩进
print(res3)
 # 输出结果:
{'error_code': 0, 'stu_info': [{'id': 100, 'name': '小明'}, {'id': 202, 'name': '小黑'}]}
<class 'dict'>
{"test1": "", "test2": ""}
<class 'str'>

在处理 MD5 加密的时候经常需要使用 json.dumps() 方法将字典转换成 json 字符串。上面的运行结果可以看到转换成 json 时冒号后面有个空格,这会导致加密结果不一致。所以在转换的时候需要加个参数 separators=(',',':'),代码如下:

 res2 = json.dumps(stus, separators=(',',':'),ensure_ascii=False) # 字典转成 json. 如果有中文,设置ensure_ascii=False
print(res2) #输出结果:
{"test1":"","test2":"","中文":"中文test"}

2. json.loads() 、json.load() 的区别

 # load 和 loads 的区别:
# loads 传的是个字符串
f = open('stus.json', encoding='utf-8')
content = f.read() # read()获取的是一个字符串对象
user_dic = json.loads(content) # 使用字符串作为参数
print(user_dic) # load 传的是个文件对象
f = open('stus.json', encoding='utf-8')
user_dic = json.load(f) #直接使用文件对象 f 作为参数
print(user_dic)

3. json.dumps()、json.dump() 的区别

 # dump 和 dumps 的区别:
# 如果要把字典写进文件里,那么使用 dump
f = open('stus2.json', encoding='utf-8')
json.dump(stus, f, ensure_ascii=False) # 直接把 stus 写进了 stus2.json 文件里

10:处理 json的更多相关文章

  1. Delphi 10.2 JSON与对象/结构体序列化性能提高100多倍

    今天在盒子闲逛,无意中看到有人说XE7自带的Json对象序列化很慢,帖子在这里:http://bbs.2ccc.com/topic.asp?topicid=464378;经过测试的确如此.     但 ...

  2. 广州.NET微软技术俱乐部微信群有用信息集锦(10) - 大量json数据压缩方案

    这是广州.NET微软技术俱乐部微信群有用信息集锦系列的其中一篇文章.   刚才微信群里有人问:“对于大量json数据返回的时候,有用过什么压缩方案吗?”   大家都给与了回答和帮助.包括: 开启gzi ...

  3. dojo 官方翻译 dojo/json 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...

  4. .net core Json字符串的序列化和反序列化通用类源码,并模拟了10万数据对比DataContractJsonSerializer和Newtonsoft性能

    我们在开发中Json传输数据日益普遍,有很多关于Json字符串的序列化和反序列化的文章大多都告诉你怎么用,但是却不会告诉你用什么更高效.因为有太多选择,人们往往会陷入选择难题. 相比.NET Fram ...

  5. iOS 阶段学习第22天笔记(JSON数据格式介绍)

    iOS学习(OC语言)知识点整理 一.JSON数据格式 1)概念:json是一种网络数据传输格式,有值/对象:{“A”:1,”B”:”2”…}词典:对象的序列:[,,,,,]数组两种数据类型 2)UR ...

  6. JSON 和 XML 优缺点的比较

    JSON 和 XML 优缺点的比较 1.JSON定义(JavaScript Object Notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换 ...

  7. json和xml数据的解析

    一 json数据 1一条json就像一个对象,也想像OC中的数组,且内嵌了很多键值对字典 {"name" : "jack", "age" : ...

  8. 关于JS中的JSON

    早期,一般是使用XML作为互联网上传输结构化数据的,但由于它解析麻烦,字符冗长,因此被轻量级的JSON所逐渐替代.JSON是JavaScript的一个严格子集,利用了JavaScript中一些模式来表 ...

  9. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

  10. Java 的 JSON 开源类库选择比较(zz)

    在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April  ...

随机推荐

  1. kickstart

    关闭防火墙.关闭selinux 1.配置DHCP服务 # yum install dhcp -y dhcp配置文件如下 # vi /etc/dhcp/dhcpd.conf 查看路径 # rpm -ql ...

  2. CentOS6.6下安装VMware Tools

    摘要:为了方便虚拟机和主机之间复制粘贴文件,拖拽文件,需要安装VMwareTools.下面将我的安装步骤记录如下: 第一步:打开虚拟机后,在VM的工具栏中点虚拟机,安装VMwareTools(T).. ...

  3. web项目中添加MySQL驱动

    1.我这里采用yml文件来配置,yml有配置层次清晰,方便操作的好处: 将application.properties后缀改成yml,即配置文件变成application.yml 我的applicat ...

  4. Find the peace with yourself

    The purpose of being mature is to find the real calm and peace with yourself. Or you can say the tur ...

  5. 一个windows计划任务的Nginx日志自动截断的批处理命令

    net stop nginx taskkill /im nginx.exe /f cd E:\nginx e: set NO=%Date:~0,4%%Date:~5,2%%Date:~8,2% set ...

  6. python3基础操作

    ubuntu下python连接mysql apt-get install python-mysqldb 获取当前时间 >>> from datetime import datetim ...

  7. 第10章 网络安全(5)_访问控制列表ACL

    6. 访问控制列表ACL 6.1 标准访问控制列表 (1)标准ACL ①标准ACL是基于IP数据包的源IP地址作为转发或是拒绝的条件.即,所有的条件都是基于源IP地址的. ②基本不允许或拒绝整个协议组 ...

  8. jquery选择器筛选器

    jQuery对象 Query 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQuery 里 ...

  9. Spring获取application.properties

    方法一:@Value获取属性值 首先在application.properties中添加属性值 app.name=MyApp app.description=${app.name} is a Spri ...

  10. Java调用Jenkins接口实现远程发版

    主要有以下几个要点: 1.在 Manage Jenkins 中设置Configure Global Security(主要是设置CSRF Protection中的prevent cross site ...