JSON-python 使用

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 类型的转化对照表:

pythonjson
dictobject
list、tuplearray
str,unicodestring
int,long,floatnumber
Truetrue
Falsefalse
Nonenull

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类型对照表:

JSONPYTHON
objectdict
arrylist
stringunicode
number(Int)int,long
number(real)float
trueTrue
falseFalse
nullNone

也可以用第三方函数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等同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值