1、json.dumps()

 json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。

转换案例:

  1. 1 import json
  2. 2
  3. 3 name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
  4. 4
  5. 5 jsObj = json.dumps(name_emb)
  6. 6
  7. 7 print(name_emb)
  8. 8 print(jsObj)
  9. 9
  10. 10 print(type(name_emb))
  11. 11 print(type(jsObj))

json.dumps()用于将dict类型的数据转成str

  1. 1 {'a': '1111', 'c': '3333', 'b': '2222', 'd': '4444'}
  2. 2 {"a": "1111", "c": "3333", "b": "2222", "d": "4444"}
  3. 3 <type 'dict'>
  4. 4 <type 'str'>

运行结果

若在数据写入json文件时,没有转格式,报错如下

  1. import json
  2.  
  3. name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
  4.  
  5. emb_filename = ('/home/cqh/faceData/emb_json.json')
  6.  
  7. # jsObj = json.dumps(name_emb)
  8.  
  9. with open(emb_filename, "w") as f:
  10. f.write(name_emb)
  11. f.close()

未转换时候的错误示例

2、json.loads()

   json.loads()用于将str类型的数据转成dict

  1. 1 import json
  2. 2
  3. 3 name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
  4. 4
  5. 5 jsDumps = json.dumps(name_emb)
  6. 6
  7. 7 jsLoads = json.loads(jsDumps)
  8. 8
  9. 9 print(name_emb)
  10. 10 print(jsDumps)
  11. 11 print(jsLoads)
  12. 12
  13. 13 print(type(name_emb))
  14. 14 print(type(jsDumps))
  15. 15 print(type(jsLoads))

json.loads()用于将str类型的数据转成dict

  1. {'a': '1111', 'c': '3333', 'b': '2222', 'd': '4444'}
  2. {"a": "1111", "c": "3333", "b": "2222", "d": "4444"}
  3. {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}
  4. <type 'dict'>
  5. <type 'str'>
  6. <type 'dict'>
  7.  
  8. #注:'a'变成了u'a'是因为发生了类型转换,str会转换成unicode

运行结果如下:

注:'a'变成了u'a'是因为发生了类型转换,str会转换成unicode

3、json.dump()

  json.dump()用于将dict类型的数据转成str,并写入到json文件中。下面两种方法都可以将数据写入json文件

  1. 1 import json
  2. 2
  3. 3 name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
  4. 4
  5. 5 emb_filename = ('/home/cqh/faceData/emb_json.json')
  6. 6
  7. 7 # solution 1
  8. 8 jsObj = json.dumps(name_emb)
  9. 9 with open(emb_filename, "w") as f:
  10. 10 f.write(jsObj)
  11. 11 f.close()
  12. 12
  13. 13 # solution 2
  14. 14 json.dump(name_emb, open(emb_filename, "w"))

json.dump()用于将dict类型的数据转成str,并写入到json文件中。

 4、json.load()

 json.load()用于从json文件中读取数据。

  1. 1 import json
  2. 2
  3. 3 emb_filename = ('/home/cqh/faceData/emb_json.json')
  4. 4
  5. 5 jsObj = json.load(open(emb_filename))
  6. 6
  7. 7 print(jsObj)
  8. 8 print(type(jsObj))
  9. 9
  10. 10 for key in jsObj.keys():
  11. 11 print('key: %s value: %s' % (key,jsObj.get(key)))

json.load()用于从json文件中读取数据。

  1. 1 {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}
  2. 2 <type 'dict'>
  3. 3 key: a value: 1111
  4. 4 key: c value: 3333
  5. 5 key: b value: 2222
  6. 6 key: d value: 4444

结果

【Python】Json序列化和反序列化模块dumps、loads、dump、load函数介绍的更多相关文章

  1. python json序列化与反序列化操作

    python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...

  2. Python Json序列化与反序列化

    在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json ...

  3. 细说【json&pickle】dumps,loads,dump,load的区别

    1 json.dumps() json.dumps()是将字典类型转化成字符串类型. import json name_emb = {'a':'1111','b':'2222','c':'3333', ...

  4. Python中的Json模块dumps、loads、dump、load函数介绍

    Json模块dumps.loads.dump.load函数介绍 1.json.dumps() json.dumps() 用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json ...

  5. Python库:序列化和反序列化模块pickle介绍

    1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装pyt ...

  6. python:序列化与反序列化(json、pickle、shelve)

    本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...

  7. python的序列化和反序列化以及json

    python 的序列化和反序列化用于内存之间的共享,包括服务器和客户端的共享,两个Python程序之间的共享,以及以字符串的形式存储到硬盘中. pyhton 的pickle 可以对Python的各种数 ...

  8. Python实现JSON序列化和反序列化

    在我的应用中,序列化就是把类转成符合JSON格式的字符串,反序列化就是把JSON格式的字符串转换成类.C#的话直接用Newtonsoft.JSON就可以了,非常好用.本来以为python也会有类似的库 ...

  9. Json模块dumps、loads、dump、load函数介绍

    转自:http://blog.csdn.net/mr_evanchen/article/details/77879967 Json模块dumps.loads.dump.load函数介绍 1.json. ...

随机推荐

  1. 无法访问GitHub

    我们开发者经常用的最大的同性交流平台--GitHub忽然访问不了了,很尴尬 可以打开控制台 ping一下 github.com 果不其然 不通 不过幸运的是里面有github的ip地址,好像是美国某个 ...

  2. maven项目导入eclipse报错

    错误提示: 原因:未安装maven,缺少ojdbc6.jar包 解决: 一.安装maven 第一步百度搜索Maven官网,进去之后,下载apache-maven-3.5.3-bin.zip,下载完成之 ...

  3. 极简 Node.js 入门 - 5.3 静态资源服务器

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  4. python第二章:控制流

    变成实际上是一个过程的提现,每个过程都是有多个流程块组成. 比如:判断是否下雨的过程 1.布尔值 在第一章最后举例了比较操作后,最终返回的结果 True or False True 和 False是一 ...

  5. D. Rescue Nibel! 解析(思維、組合、離散化、差分)

    Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ...

  6. 利用transformer进行中文文本分类(数据集是复旦中文语料)

    利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) 利用RNN进行中文文本分类(数据集是复旦中文语料) 利用CNN进行中文文本分类(数据集是复旦中文语料) 和之前介绍的不同,重 ...

  7. 《Head First 设计模式》:与设计模式相处

    正文 一.设计原则 1.封装变化 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起. 2.针对接口编程,不针对实现编程 "针对接口编程"真正的意思是& ...

  8. codeforces 1442 A. Extreme Subtraction(贪心,构造)

    传送门 样例(x): 8 15 16 17 19 27 36 29 33 结果(t1) 15 15 16 18 26 35 28 32 思路:我们可以把最左端和最右端当做两个水龙头,每个水龙头流量的上 ...

  9. java socket 字节操作

    原文链接: http://blog.csdn.net/hslinux/article/details/6214594 java与C++之间进行SOCKET通讯要点简要解析 hslinux 0.篇外语 ...

  10. 使用Asponse.Words处理Word模板

    一.客户需求 近期接到一个项目,在与客户初步沟通后,客户描述的需求听起来也非常简单,就是目前客户需要在Excel录入数据,然后把这些数据分别复制到多个Word的多个地方,除了单个值之外,还需要复制表格 ...