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 先留个坑
随机推荐
- C#深入理解AutoResetEvent和ManualResetEvent
当在C#使用多线程时就免不了使用AutoResetEvent和ManualResetEvent类,可以理解这两个类可以通过设置信号来让线程停下来或让线程重新启动,其实与操作系统里的信号量很相似(汗,考 ...
- C#_委托与事件
委托: 把方法当作参数进行传递 public delegate void AddDelegate(string name); public class Ad{ //addDelegate就是委托的一个 ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(0)
一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...
- spring boot之mybatis配置
配置在application.yml文件中 mybatis-plus: # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/mapper/*Map ...
- LINUX内核分析第八周学习总结——进程的切换和系统的一般执行过程
LINUX内核分析第八周学习总结——进程的切换和系统的一般执行过程 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/c ...
- Java awt项目开发
通过Java awt 界面上的知识编写的扫雷游戏 代码中有详细的注解 package com.langsin.saolei; import java.awt.Color;import java.awt ...
- 201303014001 张敏 计科高职13-1 github使用心得
Github:https://github.com/zhangmin131/text 个人心得体会: Git是一种良好的.支持分支管理的代码管理方式,能很好地解决团队之间协作的问题.每个工程师在自己本 ...
- 在XShell中使用sz和rz命令下载和上传文件
借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 工具/原料 XShell CentOS 6.5 使用sz下载文件 1 输 ...
- David Silver强化学习Lecture3:动态规划
课件:Lecture 3: Planning by Dynamic Programming 视频:David Silver强化学习第3课 - 动态规划(中文字幕) 动态规划 动态(Dynamic): ...
- Export OracleDB Schema To Doc
叶正盛先生做的mini工具. https://github.com/rgqancy/DBExportDoc 使用中遇到过两个小问题: 1.数据库的表名不能带.(我一个很初级的同事建立的数据库是demo ...