详解Python使用simplejson模块解析JSON的方法
1,Json模块介绍
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。
2,Json的格式
2.1,对象:
{name:"Peggy",email:"peggy@gmail.com",homepage:"https://www.nhooo.com"} {属性:值,属性:值,属性:值}
2.2,数组:
是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
[ {name:"Peggy",email:"peggy@gmail.com",homepage:"https://www.nhooo.com"},{name:"Peggy",email:"peggy@gmail.com",homepage:"https://www.nhooo.com"}, {name:"Peggy",email:"peggy@gmail.com",homepage:"https://www.nhooo.com"} ]另,值可以是字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
3,Json的导入导出
这里的write/dump的含义是将Json对象输入到一个python_object中,如果python_object是文件,则dump到文件中;如果是对象,则dump到内存中。这是序列化。
3.1,读取Json文件
importsimplejsonasjson f=file('table.json') source=f.read() target=json.JSONDecoder().decode(source) printtarget importsimplejsonasjson jsonobject=json.load(file('table.json')) printjsonobject
3.2,显示Json文件
为了显示Json格式好看,原来的Json文件:
[admin@r42h06016.xy2.aliyun.com]$pythonreadJson.py [{'Query':'desczt1;','Message':'{"DescibeTableWithPartSpec":"false","GetTableMetaString":"{\\"tableName\\":\\"zt1\\",\\"owner\\":\\"1365937150772213\\",\\"createTime\\":1346218114,\\"lastModifiedTime\\":0,\\"columns\\":[{\\"name\\":\\"a\\",\\"type\\":\\"string\\"},{\\"name\\":\\"b\\",\\"type\\":\\"string\\"}],\\"partitionKeys\\":[{\\"name\\":\\"pt\\",\\"type\\":\\"string\\"}]}"}','QueryID':'','Result':'OK'}]
执行文件:
importsimplejsonasjson jsonobject=json.load(file('table.json')) printjson.dumps(jsonobject,sort_keys=True,indent=4)
显示:
[admin@r42h06016.xy2.aliyun.com]$pythonreadJson.py [ { "Message":"{\"DescibeTableWithPartSpec\":\"false\",\"GetTableMetaString\":\"{\\\"tableName\\\":\\\"zt1\\\",\\\"owner\\\":\\\"1365937150772213\\\",\\\"createTime\\\":1346218114,\\\"lastModifiedTime\\\":0,\\\"columns\\\":[{\\\"name\\\":\\\"a\\\",\\\"type\\\":\\\"string\\\"},{\\\"name\\\":\\\"b\\\",\\\"type\\\":\\\"string\\\"}],\\\"partitionKeys\\\":[{\\\"name\\\":\\\"pt\\\",\\\"type\\\":\\\"string\\\"}]}\"}", "Query":"desczt1;", "QueryID":"", "Result":"OK" } ]
3.3,json模块示例:
importjson #ConvertingPythontoJSON json_object=json.write(python_object) #ConvertingJSONtoPython python_object=json.read(json_object)
3.4,simplejson模块示例:
importsimplejson #ConvertingPythontoJSON json_object=simplejson.dumps(python_object) #ConvertingJSONtoPython python_object=simplejson.loads(json_object)
其中的json_object也可以是文件名比如file(“tmp/table.json”)
4,Json数据的解析
假设对于data.json文件如下: