python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模块。
一、json字符串转为python值
json字符串:
{"userAccount":"54321","date":"2016-12-06 10:26:17","ClickTime": 1480991177,"jsonInfo":{"lon":121.5612,"lat":31.1832,"isGps":1,"netType":"WIFI","addr":"浦东新区长江南路1099弄56号"}}
格式化一下:
{
"userAccount": "54321",
"date": "2016-12-06 10:26:17",
"ClickTime": 1480991177,
"jsonInfo": {
"lon": 121.5612,
"lat": 31.1832,
"isGps": 1,
"netType": "WIFI",
"addr": "浦东新区长江南路1099弄56号"
}
}
# -*- coding:gbk -*-
import json
sJOSN = '{"userAccount":"54321","date":"2016-12-06 10:26:17","ClickTime": 1480991177,"jsonInfo":{"lon":121.5612,"lat":31.1832,"isGps":1,"netType":"WIFI","addr":"浦东新区长江南路1099弄56号"}}'
sValue = json.loads(sJOSN)
print(sValue)
输出:
============= RESTART: C:\Users\Administrator\Desktop\Python.py =============
{'jsonInfo': {'lat': 31.1832, 'isGps': 1, 'netType': 'WIFI', 'addr': '浦东新区长江南路1099弄56号', 'lon': 121.5612}, 'ClickTime': 1480991177, 'userAccount': '54321', 'date': '2016-12-06 10:26:17'}
>>>
对比一下原始字符串和输出的,发现前后顺序变了,因为在转化为python的字典数据的过程中,顺序会变化。
另外,json中的双引号都改成了单引号。
二、python值转为json字符串
# -*- coding:gbk -*-
import json
sDict={'jsonInfo': {'netType': 'WIFI', 'lat': 31.1832, 'addr': '浦东新区长江南路1099弄56号', 'isGps': 1, 'lon': 121.5612}, 'userAccount': '54321', 'ClickTime': 1480991177, 'date': '2016-12-06 10:26:17'}
sValue = json.dumps(sDict)
print(sValue)
输出:
又从字典数据变为了json字符串。
三、解析json中的数据
# -*- coding:gbk -*-
import json
sJOSN = '{"userAccount":"54321","date":"2016-12-06 10:26:17","ClickTime": 1480991177,"jsonInfo":{"lon":121.5612,"lat":31.1832,"isGps":1,"netType":"WIFI","addr":"浦东新区长江南路1099弄56号"}}'
sValue = json.loads(sJOSN)
for k in sValue.keys():
if str(type(sValue[k]))!="<class 'dict'>":
print(k+':'+ str(sValue[k]))
else:
print(str(k)+':')
for k1 in sValue[k].keys():
print(' '*3 + k1 +':'+str(sValue[k][k1]))
输出:
========= RESTART: C:\Users\Administrator\Desktop\Python json转为字典.py =========
userAccount:54321
date:2016-12-06 10:26:17
jsonInfo:
netType:WIFI
addr:浦东新区长江南路1099弄56号
lon:121.5612
lat:31.1832
isGps:1
ClickTime:1480991177