Python中的json模块
JSON的全称为**”JavaScript Object Notation”,意思是JavaScript**对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。JSON 表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。 JSON 不仅是标准格式,并且比XML 更快,而且可以直接在 Web 页面中读取,非常方便。
1.JSON与Python类型对比
JSON类型 | Python 类型 |
---|---|
{} | dict |
[] | list |
"string" | ’str’或 u’unicode’ |
1234.56 | int 或 float |
true/false | True/False |
null | None |
2.将python对象编码成为json的字符串格式json.dumps()
import json
# 将python对象编码成为json的字符串格式;
# Python对象为字符串
d = {'name': 'villa'}
jsonStr = json.dumps(d)
print(jsonStr)
print(type(jsonStr))
# Python对象为列表
l = [1, 2, 3, 4]
jsonLi = json.dumps(l)
print(jsonLi, type(jsonLi))
dump()里可选参数:
def dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw):
# sort_keys是告诉编码器按照字典排序(a到z)输出
# indent参数根据数据格式缩进显示,读起来更加清晰
# separators参数的作用是去掉,,:后面的空格
# skipkeys参数,在encoding过程中,dict对象的key只可以是string对象,如果是其他类型,
# 那么在编码过程中就会抛出ValueError3的异常。skipkeys可以跳过那些非string对象当作key的处理.
3.将获取的json字符串解码为python的对象json.loads()
# # 将获取的json字符串解码为python的对象
d = {'name': 'villa'}
jsonStr = json.dumps(d)
pythonDict = json.loads(jsonStr)
print(pythonDict, type(pythonDict))
Json应用:
import json
from urllib.request import urlopen
# ip = '8.8.8.8'
ip = input("请输入查询的IP:")
url = "http://ip.taobao.com/service/getIpInfo.php?ip=%s" %(ip)
# 根据url获取网页的内容, 并且解码为utf-8格式, 识别中文;
text = urlopen(url).read().decode('utf-8')
# print(text)
# print(type(text))
# 将获取的字符串类型转换为字典, 方便处理
d = json.loads(text)['data']
country = d['country']
city = d['city']
print(country, city)