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序列化 & 反序列化的更多相关文章

  1. json序列化反序列化Jackson相关注解

    1.@Transient @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性:如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架 ...

  2. C语言JSON序列化/反序列化

    最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个: 两个问题: C语言结构体本身没有元数据,这 ...

  3. nodejs - json序列化&反序列化示例

    // demo-json.js var obj = { "name": "LiLi", "age": 22, "sex" ...

  4. spring cloud jackson 枚举json互转 枚举json序列化/反序列化

    先定义一个枚举基类 import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @JsonDeserialize(using = ...

  5. Newtonsoft.Json 序列化反序列化

    public class People { public string name { get; set; } public string age { get; set; } public string ...

  6. 怎样在ASP.NET(C#) 使用Json序列化反序列化问题?

    using System; using System.Collections.Generic; using System.Web; using System.Web.Script.Serializat ...

  7. JSON序列化反序列化

    JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在 ...

  8. ASP.NET(C#) Json序列化反序列化帮助类Jsonhelper

    原文地址:https://ken.io/note/csharp-asp.net-jsonhelper using System; using System.Collections.Generic; u ...

  9. 关于spring中请求返回值的json序列化/反序列化问题

    https://cloud.tencent.com/developer/article/1381083 https://www.jianshu.com/p/db07543ffe0a 先留个坑

随机推荐

  1. Luogu P4053 [JSOI2007]建筑抢修

    一道贪心题,看数据范围就知道要套一个数据结构上去. 别走啊不是什么很高级的数据结构 考虑最朴素的想法,按建筑的抢修时间排序并先拿小的 然后随便想想都可以找到一堆反例 所以我们就直接考虑模拟这个过程,按 ...

  2. 2017NOIP游记

    记得去年这个时候,大概刚接触OI.没想到时间这么快,第一次2017NOIP之旅已经结束.初测成绩出来了,100+100+95+50=345,有浙江三十几名(@Cptraser 机房370大佬).总体感 ...

  3. vue 中使用 async/await 将 axios 异步请求同步化处理

    1. axios 常规用法: export default { name: 'Historys', data() { return { totalData: 0, tableData: [] } }, ...

  4. ML.NET 示例:多类分类之问题分类

    写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...

  5. 个人java框架 技术分析

    1.框架选型 spring-boot https://github.com/JeffLi1993/springboot-learning-example https://mp.weixin.qq.co ...

  6. IIS_部署出错

    在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Fil ...

  7. Linux umask

    新建一个文件或目录,它的默认权限是什么?如果要修改一个用户创建的文件和目录的默认权限该如何做?本文将介绍相关的内容.说明:本文的演示环境为 ubuntu 16.04. 文件的默认权限 为了查看用户创建 ...

  8. 关于Runtime error

    别人说的,但我感觉是因为你的操作是不符合语言规定的,让编译器无法识别,运行不出

  9. Week 3 结对编程

    Group: 杜正远 潘礼鹏 结对编程: 优点: 集体荣誉感.你们已经是一个集体了,一定得为对方着想负责. 1.看对方的代码,彼此会互相学习到一些奇妙的方法. 2.结对编程能把两个事情分开,降低复杂度 ...

  10. java计算器项目

    简单的java计算器项目   题目:java计算器项目 一. 题目简介: 一个能进行加减乘除四则运算的小程序 Github链接:https://github.com/lizhenbin/test/tr ...