前言
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
本文主要介绍的是python中解析json格式文件的方法,解析json文件无非编码和解码,这里我们用了python下自带的json模块。当然还要结合python本身特有的dict类型的操作。下面来看看详细的介绍吧。
编码
编码用到的是json.dumps()
函数,将字典转化为json对象。
1
2
3
4
5
|
import json
data = [{ 'a' : "A" , 'b' :( 2 , 4 ), 'c' : 3.0 }] #list对象
print "DATA:" , repr (data)
data_string = json.dumps(data) #dumps函数
print "JSON:" ,data_string
|
输出的结果是:
1
2
|
DATA: [{ 'a' : 'A' , 'c' : 3.0 , 'b' :( 2 , 4 )}] #python的dict类型的数据是没有顺序存储的
JSON: [{ "a" : "A" , "c" : 3.0 , "b" :[ 2 , 4 ]}]
|
解码
解码用json.loads()
函数,将json格式转化为dict。
1
2
3
4
|
import json
data = '{"a":"A","b":[2,4],"c":3.0}' #json格式
decoded = json.loads(data)
print "DECODED:" ,decoded
|
输出的结果是
1
|
DECODED: [{u 'a' : u 'A' , u 'c' : 3.0 , u 'b' : [ 2 , 4 ]}]
|
编码和解码的过程中,元组会被变成无次序的列表,而字典的次序也并不能保证不变。
现在,处理json格式的重点便成了正确处理dict类型数据了。
常见错误
python的json模块不支持单引号,所以类似"{'a':'A','b':[2,4],'c':3.0}"
的字符串是会报以下错误的:
1
|
ValueError: Expecting property name: line 1 column 2 (char 1 )
|
这时候我们只需要把他单双引号互换即可:
1
|
'{"a":"A","b":[2,4],"c":3.0}'
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。