一、json

  json,用于字符串 和 python数据类型间进行转换

  Json模块提供了四个功能:dumps、dump、loads、load

1、json.loads()用于将字符串形式的字典,列表转换成相应的字典,列表(元祖不可以,应为其他语言中没用元祖)

import json

a="[1,2,3,4]"
b='{"k1":1,"k2":2}'#当字符串为字典时{}外面必须是''单引号{}里面必须是""双引号
print(json.loads(a))
print(json.loads(b)) [1, 2, 3, 4]
{'k2': 2, 'k1': 1}

2、json.dumps() 用于将列表,字典,元祖转换成字符串。其中元祖转变成字符串为列表形式

python中的字符串分普通字符串和unicode字符串,一般从数据库中读取的字符串会自动被转换为unicode字符串

import json
a = [1,2,3,4]
b ={"k1":1,"k2":2}
c = (1,2,3,4) print(json.dumps(a))
print(json.dumps(b))
print(json.dumps(c))

可以看到这里输出的字符串为普通字符串,但是里面的内容却是unicode字符串的内容

要想得到字符串的真实表示,需要用到参数ensure_ascii=False(默认为True)

import json
b = {"name":"我"}
print(json.dumps(b,ensure_ascii=False)) {"name": "我"}

3、 json.dump()把一个字典或列表以字符串的形式写到文件中

import json
a = [1,2,3,4]
json.dump(a,open("texe.py","w"))

4、json.load() 把在文件中以列表、字典形式保存的字符串元素读出来

import json
a = [1,2,3,4,1]
ap = json.load(open("texe.py"))
print(ap)

二、pickle

  pickle   用于【特殊的字节类型】 和 【python数据类型】间进行转换

   pickle  模块提供了四个功能:dumps、dump、loads、load

1、pickle.dumps() 用于将python中特有的数据类型转换成特殊的字节类型

import pickle
a = [1,2,3,4]
f = pickle.dumps(a)
print(f)
print(type(f))
h = json.dumps(a) b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.'
<class 'bytes'>

2、 pickle.loads()用于将特殊字节类型转换成python特有的数据类型

import pickle
a = [1,2,3,4]
f = pickle.dumps(a)
print(f)
print(type(f))
print(pickle.loads(f)) b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.'
<class 'bytes'>
[1, 2, 3, 4]

3、 pickle.dump()把python中特有的数据类型以特殊字节的形式写到文件中(其中文件都是以字节方式打开)

import pickle
a = [1,2,3,4]
pickle.dump(a,open("aaa.py","wb"))

4、json.load() 把在文件中以特殊字节保存的数据读出来

import pickle
ret = [1,2,3,4]
pickle.dump(ret,open("aaa.py","wb"))
p = pickle.load(open("aaa.py","rb"))
print(p)

===================总结=============================

json      1、用于多语言间的相互转换

          2、无论是否写到文件中,json都是列表、字典、元祖和字符串之间的相互转换

pickle   1、只适用于python

      2、无论是否写到文件中,pickle都是用于python中所有数据类型和只有python才能解析的特殊字节间的相互转换

     3、如果涉及到写到文件中,打开方式必须是以字节方式打开

json 和 pickel 详解的更多相关文章

  1. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  2. jmeter之json提取器详解

    Json提取器详解 *Apply to:参照正则表达式提取器 *Names of created:自定义变量名. 变量名可以填写多个,变量名之间使用分号进行分隔. 一旦变量名有多个,则下方的json ...

  3. 小程序2-基本架构讲解(一)JSON配置与详解

    项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 .wxss 后缀的 WXSS 样式文件 .js 后缀的 JS 脚本逻辑文件 JSON 配 ...

  4. java中Array/List/Map/Object与Json互相转换详解

    http://blog.csdn.net/xiaomu709421487/article/details/51456705 JSON(JavaScript Object Notation): 是一种轻 ...

  5. JSON 语法规则详解

    JSON 的语法规则十分简单,无论用何种方法总结都只有数条而已,它参考了 C 语言家族的一些习惯,学习起来并不会感到陌生. 回顾JSON 的五点语法 1)- 数组(Array)用方括号("[ ...

  6. python 序列化之JSON和pickle详解

    JSON模块 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类 ...

  7. JSON.parse和JSON.stringify 参数详解

    JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}')   ...

  8. java中Array/List/Map/Object与Json互相转换详解(转载)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  9. Linux 命令详解(十一)Shell 解析 json命令jq详解

    前言 在自动化部署中涉及到shell脚本需要动态读取很多配置文件,最好是json格式. 更多jq信息: http://stedolan.github.io/jq/manual/ 一.根据key获取va ...

随机推荐

  1. TCP/IP四层模型和OSI七层模型的概念

    转:http://blog.csdn.net/superjunjin/article/details/7841099/ TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了T ...

  2. 进程间通信IPC之--共享内存

    每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲 ...

  3. 81 Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

  4. 黄聪:解决丢失api-ms-win-crt-runtime-|1-1-0.dll的问题:vc_redist.x64

    解决无法启动程序,因计算机中丢失api-ms-win-crt-runtime-|1-1-0.dll的问题 安装:Microsoft Visual C++ 2015 RC Redistributable ...

  5. vim制作c的IDE

    编译vim源码 (1)安装依赖 sudo apt-get install python-dev python3-dev ruby-dev libx11-dev libgtk2.0-dev libgtk ...

  6. 3. redis的超时,事务,watch

    一. 键的生存时间 expire设置一个已经存在的key的生存时间,到时间后redis自动删除这个 命令 expire 设置生存时间(单位/秒) pexpire设置生存时间(单位/毫秒) ttl/pt ...

  7. Swing多线程

    Swing的单线程开发机制 多线程开发,显然要比单线程开发有趣.高效.美妙得多.特别是在Java这种天生支持多线程的语言中,更是如此.可是,Java最重要的组成部分Swing确是单线程的! 并非只有S ...

  8. 【转】select和epoll模型的差异

    http://www.cppblog.com/converse/archive/2008/10/12/63836.html epoll为什么这么快 epoll是多路复用IO(I/O Multiplex ...

  9. JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。

    在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用. 首先右键点我的电脑.打开属性.然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME” ...

  10. linux 好玩的命令

    发现一个linux好玩的命令,随机显示名言警句和诗词:fortune 和 fortune-zh (中文) cowsay: 小动物说话- ________________________________ ...