10:处理 json
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的更多相关文章
- Delphi 10.2 JSON与对象/结构体序列化性能提高100多倍
今天在盒子闲逛,无意中看到有人说XE7自带的Json对象序列化很慢,帖子在这里:http://bbs.2ccc.com/topic.asp?topicid=464378;经过测试的确如此. 但 ...
- 广州.NET微软技术俱乐部微信群有用信息集锦(10) - 大量json数据压缩方案
这是广州.NET微软技术俱乐部微信群有用信息集锦系列的其中一篇文章. 刚才微信群里有人问:“对于大量json数据返回的时候,有用过什么压缩方案吗?” 大家都给与了回答和帮助.包括: 开启gzi ...
- dojo 官方翻译 dojo/json 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...
- .net core Json字符串的序列化和反序列化通用类源码,并模拟了10万数据对比DataContractJsonSerializer和Newtonsoft性能
我们在开发中Json传输数据日益普遍,有很多关于Json字符串的序列化和反序列化的文章大多都告诉你怎么用,但是却不会告诉你用什么更高效.因为有太多选择,人们往往会陷入选择难题. 相比.NET Fram ...
- iOS 阶段学习第22天笔记(JSON数据格式介绍)
iOS学习(OC语言)知识点整理 一.JSON数据格式 1)概念:json是一种网络数据传输格式,有值/对象:{“A”:1,”B”:”2”…}词典:对象的序列:[,,,,,]数组两种数据类型 2)UR ...
- JSON 和 XML 优缺点的比较
JSON 和 XML 优缺点的比较 1.JSON定义(JavaScript Object Notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换 ...
- json和xml数据的解析
一 json数据 1一条json就像一个对象,也想像OC中的数组,且内嵌了很多键值对字典 {"name" : "jack", "age" : ...
- 关于JS中的JSON
早期,一般是使用XML作为互联网上传输结构化数据的,但由于它解析麻烦,字符冗长,因此被轻量级的JSON所逐渐替代.JSON是JavaScript的一个严格子集,利用了JavaScript中一些模式来表 ...
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象
一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...
- Java 的 JSON 开源类库选择比较(zz)
在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April ...
随机推荐
- HDFS 入门介绍
HDFS简介 HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问, ...
- C#存储过程中return参数
//1 连接字符串 string connectionString = "server=127.0.0.1;integrated security=true;database=MSPetSh ...
- 第10课 std::bind和std::function(1)_可调用对象
1. 几种可调用对象(Callable Objects) (1)普通函数指针或类成员的函数指针 (2)具有operator()成员函数的类对象(仿函数).如c++11中的std::function类模 ...
- Web api Json 接受的参数类型为父类,自动序列化为子类的过程
场景: public abstract class JsonCreationConverter<T> : JsonConverter { /// <summary> /// t ...
- tkinter简单使用
第一个运行程序 # -*- coding: utf-8 -*- import tkinter as tk //引入 root = tk.Tk() // 实例化root T大写k小写 root.titl ...
- 搜狗输入法在Ubuntu下突然不能输入中文
使用搜狗输入法在Ubuntu下突然不能输入中文,这种情况出现多次,先找到一个快捷的解决方案: 首先要知道遇到这种情况的很大可能原因是bin目录里文件过多,系统加载不完全,你就算上面的脚本执行3次都不行 ...
- 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。
[已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no enc ...
- com.alibaba.dubbo.rpc.RpcException: Fail to start server(url: dubbo://192.16。。
开启了linux的zookeeper服务,启动e3-manager时发现出现com.alibaba.dubbo.rpc.RpcException: Fail to start server(url: ...
- IDEA下载Git中项目
一. 打开idea,点击File>Settings,搜索git(安装系统默认设置即可) 二. 选择git 三. Git中项目的路径粘贴到ID ...
- oracle TDE
转自:oracle TDE学习系列 (1) — wallet 使用管理 关于oracle wallet,通常称为oracle钱夹,说的通俗一点,oracle wallet是一个用 口令加密的PKCS# ...