Python语言标准库 json
小标 2018-07-17 来源 : 阅读 1127 评论 0

摘要:本文主要向大家介绍了Python语言标准库 json,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言标准库 json,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

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

#JSON   Pythonobject  dictarray   liststring  unicodenumber (int)    int, longnumber (real)   floattrue    Truefalse   Falsenull    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");

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程