json是一种轻量级的数据交换格式。
使用JSON先导入json库:
import json
点击json进入,查看源码里面的示例如下:
Encoding basic Python object hierarchies::
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
Compact encoding::
>>> import json
>>> mydict = {'4': 5, '6': 7}
>>> json.dumps([1,2,3,mydict], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
Pretty printing::
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
"4": 5,
"6": 7
}
“”"
解析:
json.dumps 将python对象编码成JSON字符串
json.loads 将json字符串解码为python对象。
python 原始类型向 json 类型的转化对照表:
python | json |
---|---|
dict | object |
list、tuple | array |
str,unicode | string |
int,long,float | number |
True | true |
False | false |
None | null |
json.loads用于解码JSON数据,该函数返回python字段的数据类型
#!/usr/bin/python
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print(text)
打印结果:
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
json类型转换为python类型对照表:
JSON | PYTHON |
---|---|
object | dict |
arry | list |
string | unicode |
number(Int) | int,long |
number(real) | float |
true | True |
false | False |
null | None |
也可以用第三方函数Demjson,用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。
第三方库需要先安装,pip install demjson,或者采用下载完之后用python setup.py install安装或者在pycharm设置中直接安装库均可。
encode函数:将python对象编码为json字符串,同json.dumps
decode函数:将json字符串解码为python对象,同json.loads
import json
import demjson
pythonDict={"a":1,"b":2.34,"c":None,"d":"null","e":True,"f":False}
print(json.dumps(pythonDict))
print ( type ( json.dumps ( pythonDict ) ) )
print(demjson.encode(pythonDict))
print ( type ( demjson.encode ( pythonDict ) ) )
jsonData='{"a1":12,"b2":2.323,"c":null,"d":123,"e":"hello","f":true,"g":false}'
print ( json.loads ( jsonData ) )
print ( type ( json.loads ( jsonData ) ) )
print(demjson.decode(jsonData))
print ( type ( demjson.decode ( jsonData ) ) )
运行结果如下:
C:\Users\18566\AppData\Local\Programs\Python\Python38\python.exe C:/Users/18566/Desktop/APPAutoTest/hook/hook_learn.py
{"a": 1, "b": 2.34, "c": null, "d": "null", "e": true, "f": false}
<class 'str'>
{"a":1,"b":2.34,"c":null,"d":"null","e":true,"f":false}
<class 'str'>
{'a1': 12, 'b2': 2.323, 'c': None, 'd': 123, 'e': 'hello', 'f': True, 'g': False}
<class 'dict'>
{'a1': 12, 'b2': 2.323, 'c': None, 'd': 123, 'e': 'hello', 'f': True, 'g': False}
<class 'dict'>
Process finished with exit code 0
可以看到python对象和json转换的时候需要注意的地方,True<->true False<->false None<->null。查看运行结果json.dumps<—>demjson.encode等同,json.loads<–>demjson.decode等同