json序列化 & 反序列化
json序列化:
json的dumps方法可以将json格式数据序列为python的相关数据类型,比如str,常用于打印,另外,在序列化时,中文汉字被转换为unicode编码,在dumps函数中添加参数ensure_ascii=False可解决;dumps的indent参考可以调整显示格式,即缩进,一般设置为2。【字典中键值对,不管是单还是双引号,dumps后,都是双引号】
json反序列化:
json的loads方法可以把python数据类型转换为json相应的数据类型格式,反序列化后可以对json数据进行各种操作;反序列化时,键值数据不能用双引号,只能用单引号(如果是双引号,可以用eval)。
键值对如果是单引号,loads报错:
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
import json
print('字典'.center(10,'*'))
s1 = '{"tom":{"age":18,"sex":"男"},"jack":{"age":19,"sex":"女"}}'
s2 = "{'tome':{'age':18,'sex':'男'},'jack':{'age':19,'sex':'女'}}" # 字符串通过json.loads转字典的时候,字符串里面不能为单引号,打印s2会报错
print(json.loads(s1), type(json.loads(s1)))
# 用dumps,字典中键值变成双引号
print(json.dumps(json.loads(s1)), type(json.dumps(json.loads(s1))))
print(json.dumps(json.loads(s1),ensure_ascii=False), type(json.dumps(json.loads(s1),ensure_ascii=False)))
print(json.dumps(json.loads(s1),ensure_ascii=False,indent=2))
# 用str,字典中键值依旧是单引号
print(str(json.loads(s1)), type(str(json.loads(s1))))
# print(json.loads(s2)) # 报错
# 但是,可以通过eval将s2转换为字典
print(eval(s2), type(eval(s2)))
# dumps会将中文转换成unicode编码,加参数ensure_ascii=False解决
print(json.dumps(eval(s2)), type(json.dumps(eval(s2))))
print(json.dumps(eval(s2),ensure_ascii=False), type(json.dumps(eval(s2),ensure_ascii=False)))
print('字符串--列表'.center(10,'*'))
la = '[1,2,3,4]'
lb = "[1,2,3,4]"
print(eval(la), type(eval(la)))
print(json.loads(la), type(json.loads(la))) # 字符串转列表[1, 2, 3, 4] <class 'list'>
print(json.dumps(json.loads(la)),type(json.dumps(json.loads(la)))) # 列表转字符串,[1, 2, 3, 4] <class 'str'>
print(eval(lb), type(eval(lb)))
print(json.loads(lb), type(json.loads(lb))) # 字符串转列表[1, 2, 3, 4] <class 'list'>
print(json.dumps(json.loads(lb)),type(json.dumps(json.loads(lb)))) # 列表转字符串,[1, 2, 3, 4] <class 'str'>
print('列表--字符串'.center(10,'*'))
user_list = ['tom', 'jack']
user_list2 = ["tom", "jack"]
print(type(json.dumps(user_list)), json.dumps(user_list)) # 列表转字符串 <class 'str'> ["alex", "jason"]
print(type(json.dumps(user_list2)), json.dumps(user_list2))
print(type(json.dumps(user_list2)), str(user_list2)) # 双引号变单引号
print('导入、导出'.center(10,'*'))
dic = {'k1': 1, 'k2': 2}
json.dump(dic, open('db', 'w')) # 将字典序列化导入文件,写入字符串
r = json.load(open('db', 'r')) # 反序列化从文件中导出
print(r, type(r)) # {'k1': 1, 'k2': 2} <class 'dict'>

json序列化 & 反序列化的更多相关文章
- json序列化反序列化Jackson相关注解
1.@Transient @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性:如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架 ...
- C语言JSON序列化/反序列化
最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个: 两个问题: C语言结构体本身没有元数据,这 ...
- nodejs - json序列化&反序列化示例
// demo-json.js var obj = { "name": "LiLi", "age": 22, "sex" ...
- spring cloud jackson 枚举json互转 枚举json序列化/反序列化
先定义一个枚举基类 import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @JsonDeserialize(using = ...
- Newtonsoft.Json 序列化反序列化
public class People { public string name { get; set; } public string age { get; set; } public string ...
- 怎样在ASP.NET(C#) 使用Json序列化反序列化问题?
using System; using System.Collections.Generic; using System.Web; using System.Web.Script.Serializat ...
- JSON序列化反序列化
JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在 ...
- ASP.NET(C#) Json序列化反序列化帮助类Jsonhelper
原文地址:https://ken.io/note/csharp-asp.net-jsonhelper using System; using System.Collections.Generic; u ...
- 关于spring中请求返回值的json序列化/反序列化问题
https://cloud.tencent.com/developer/article/1381083 https://www.jianshu.com/p/db07543ffe0a 先留个坑
随机推荐
- linux svn代码回滚命令
取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svn revert就能取消之前的修改. svn revert用法如下: # svn revert [-R ...
- GATT服务搜索流程(一)
GATT的规范阅读起来还是比较简答, 但是这样的规范在代码上是如何实现的呢?下面就分析一下bluedroid 协议栈关于GATT的代码流程. BLE的设备都是在SMP之后进行ATT的流程的交互.从代码 ...
- React之父子组件传递和其它一些要点
react是R系技术栈中最基础同时也是最核心的一环,2年不到获取了62.5k star(截止到目前),足可见其给力程度.下面对一些react日常开发中的注意事项进行罗列. React的组件生命周期 r ...
- 自动化批量管理工具salt-ssh - 运维小结
根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的.早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操 ...
- oracle数据库添加新用户
/*分为四步 */ /*第1步:创建临时表空间 */ create temporary tablespace kmyf_temp tempfile 'E:\app\pangxy\product\11. ...
- Week2 关于代码规范的一些认识
代码规范 我觉得代码规范是有必要的,而对于以下的四个观点我要提出自己的反驳: 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西 首先应该明白,什么是“编码规范”?它不 ...
- Beta项目展示
Team C# 一.团队成员简介 杜正远,队长. 博客地址:http://www.cnblogs.com/kevindu/ 崔强,全职PM. 博客地址:http://www.cnblogs.com/m ...
- 团队项目 NABCD分析java音乐播放器
NABCD分析java音乐播放器 程设计题目:java音乐播放器 一.课程设计目的 1.编程设计音乐播放软件,使之实现音乐播放的功能. 2.培养学生用程序解决实际问题的能力和兴趣. 3.加深java中 ...
- Practice4 阅读《构建之法》6-7章
关于第五章后面的阅读已经在Practice3中有所感悟,下面是6-7章的读书笔记. 第6章 敏捷流程这一章讲了“敏捷流程”这一概念,关于这一名词我是很陌生的,在阅读之后有了一定的理解.敏捷流程是提供了 ...
- ubuntu在windows下的wubi安装
转自:http://mp.weixin.qq.com/s?__biz=MjM5NjYxNjU0OQ==&mid=200664819&idx=2&sn=25719890570b1 ...