使用loads方法即可将json字符串转换成python对象,对应关系如下:

#JSON	Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None

1 使用json模块的时候需要注意的是对中文的处理,loads方法如果传入的字符串的编码不是UTF-8的话,需要用encoding指定字符编码

#!/usr/bin/env python
# -*- coding:utf-8 -*- import json
js = json.loads('{"insun": "泰囧 / 人在囧途2 / Lost in Thailand "}')
print json.dumps(js)
print json.dumps(js,ensure_ascii=False)
results:
{"insun": "\u6cf0\u56e7 / \u4eba\u5728\u56e7\u90142 / Lost in Thailand "}
{"insun": "泰囧 / 人在囧途2 / Lost in Thailand "}

2 如果传入的字符串的编码不是UTF-8的话,需要用encoding指定字符编码

对于:

dataDict = json.loads(dataJsonStr)

其中dataJsonStr是json字符串,如果其编码本身是非UTF-8的话,比如是GB2312的,那么上述代码,就会导致出错。

改为对应的:

dataDict = json.loads(dataJsonStr, encoding="GB2312")

就可以了。

此处,即对应着上面函数解释中的:

If s is a str instance and is encoded with an ASCII based encoding other than UTF-8 (e.g. latin-1), then an appropriate encoding name must be specified

3 如果要解析的字符串,本身的编码类型不是基于ASCII的,那么调用json.loads之前,需要先将对应字符串,转换为Unicode类型的

还是以上述的:

dataDict = json.loads(dataJsonStr, encoding="GB2312") 为例,即使你此处的字符串dataJsonStr,已经通过encoding指定了合适的编码,但是由于其中,包含了其他的编码的字符,比如我本身 dataJsonStr是GB2312的字符,但是其中又包含了的一些日文字符,此时,json.loads还是会出错,因为此处的 dataJsonStr不是以ASCII为基础的字符编码,所以,需要先去将dataJsonStr转换为Unicode,然后再调用json.loads,就可以了。

代码如下:

dataJsonStrUni = dataJsonStr.decode("GB2312");
dataDict = json.loads(dataJsonStrUni, encoding="GB2312");

pyhton标准库 json的更多相关文章

  1. [python]标准库json格式化工具

    这段时间做的事情比较杂乱,一部分时间在做运维,一部分时间在做开发,总是太着急,总是感觉很多东西做的不是很满意.还是要静下心来好好想一想,多花些时间来改进,重构和思考. 软件开发绝不紧紧是写代码,完成功 ...

  2. json 标准库

    1. 序列化的简单概念 2. json 标准库 2.1 json.dumps() 2.2 json.loads() 2.3 json.dump() 2.4 json.load() 1. 序列化的简单概 ...

  3. [python标准库]Pickle模块

    Pickle-------python对象序列化 本文主要阐述以下几点: 1.pickle模块简介 2.pickle模块提供的方法 3.注意事项 4.实例解析 1.pickle模块简介 The pic ...

  4. Python常用标准库(pickle序列化和JSON序列化)

    常用的标准库 序列化模块 import pickle 序列化和反序列化 把不能直接存储的数据变得可存储,这个过程叫做序列化.把文件中的数据拿出来,回复称原来的数据类型,这个过程叫做反序列化. 在文件中 ...

  5. Python 标准库 urllib2 的使用细节[转]

    转自[http://zhuoqiang.me/python-urllib2-usage.html] Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比 ...

  6. Python标准库与第三方库详解(转载)

    转载地址: http://www.codeweblog.com/python%e6%a0%87%e5%87%86%e5%ba%93%e4%b8%8e%e7%ac%ac%e4%b8%89%e6%96%b ...

  7. Python 标准库 urllib2 的使用细节

    刚好用到,这篇文章写得不错,转过来收藏.    转载自 道可道 | Python 标准库 urllib2 的使用细节 Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节 ...

  8. 完成OSS.Http底层HttpClient重构封装 支持标准库

    OSS.Http项目对于.Net Standard标准库的支持已经迁移完毕,OSS开源系列两个最底层的类库已经具备跨运行时支持的能力.由于OSS.Http类库是几年前我参照RestSharp的思路,完 ...

  9. 微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列

    支付基本上是很多产品都必须的一个模块,大家最熟悉的应该就是微信和支付宝支付了,不过更多的可能还是停留在直接sdk的调用上,甚至和业务系统高度耦合,网上也存在各种解决方案,但大多形式各异,东拼西凑而成. ...

随机推荐

  1. 手把手教你玩转Git分布式版本控制系统!

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...

  2. freemarker解析模板报错问题

    在确定模板文件代码无误的情况下,导致报错的原因大概有以下原因: 模板文件编码改变了(比如eclipse中的项目部署到tomcat下,而忘记设置tomcat编码就会导致读取模板文件编码不正确,导致程序解 ...

  3. linuc c 代码示例

    fork的应用: #include "stdio.h" #include "string.h" #include <sys/types.h> #in ...

  4. Hibernae 的延迟加载

    http://blog.csdn.net/xc635960736/article/details/7049863 Hibernae 的延迟加载   Hibernae 的延迟加载是一个非常常用的技术,实 ...

  5. Gatling的进阶一

    转载:http://www.51testing.com/html/10/26810-852966.html 首先 抄袭一个Gatling的介绍 Gatling是一款基于Scala 开发的高性能服务器性 ...

  6. 常用开源Jabber(XMPP) IM服务器介绍(转)

      1. Openfire (Wildfire) 3.x授权: GPL or 商用操作系统平台:所有(使用Java开发)XMPP Jabber 协议实现情况:98%Tim 评价:安装和使用非常简单,安 ...

  7. Oracle中的约束

    非空约束 NOT NULL 数据库表中的某一个列不能为空 唯一约束 UNIQUE 表中某一个列不允许重复 唯一约束所在列可以为NULL,但只能出现一次 代码: CREATE TABLE MEMBER ...

  8. POJ 2154 【POLYA】【欧拉】

    前记: TM终于决定以后干啥了.这几天睡的有点多.困饿交加之间喝了好多水.可能是灌脑了. 切记两件事: 1.安心当单身狗 2.顺心码代码 题意: 给你N种颜色的珠子,串一串长度问N的项链,要求旋转之后 ...

  9. 编译redis

    apt-get install gcc tcl make MALLOC=libc

  10. 06-模仿系统的UIImageView

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...