1.JSON 函数
JSON(JavaScript Object Notation)是一种轻量级的数据格式。
使用JSON函数需要导入json库:import json
json.dumps 将Python 对象编码成JSON字符串
json.loads 将已编码的JSON字符串解码为Python对象
实例1
import json
a = [1,"a","b"]
print("a:",a)
print("type(a):",type(a))
b = json.dumps(a)
print("b:",b)
print("type(b):",type(b))
c = json.loads(b)
print("c:",c)
print("type(c):",type(c))
运行结果
a: [1, 'a', 'b']
type(a):
b: [1, "a", "b"]
type(b):
c: [1, 'a', 'b']
type(c):
a是一个list,用json.dump()编码之后,变为str类型;用json.loads()解码之后又变为list类型。
实例2
import json
d = '[1,2,3]'
print("d:",d)
print("type(d):",type(d))
e = json.loads(d)
print("e:",e)
print("type(e):",type(e))
运行结果
d: [1,2,3]
type(d):
e: [1, 2, 3]
type(e):
输入到json.loads()中的数据需要是str类型
实例3
import json
data1 = {"a":1,"b":2}
print("data1:",data1)
print("type(data1):",type(data1))
data2 = json.dumps(data1)
print("data2:",data2)
print("type(data2):",type(data2))
运行结果
data1: {'a': 1, 'b': 2}
type(data1):
data2: {"a": 1, "b": 2}
type(data2):
输入数据data1为dict类型,用json.dumps()编码之后转换为str类型
实例4:
import json
data3 = '{"a":1,"b":2}'
print("data3:",data3)
print("type(data3):",type(data3))
data4 = json.loads(data3)
print("data4:",data4)
print("type(data4):",type(data4))
运行结果
data3: {"a":1,"b":2}
type(data3):
data4: {'a': 1, 'b': 2}
type(data4):
data3是str类型,用json.loads()解码之后为dict类型
2.实践中遇到的问题
在写post请求获取数据是,如果使用如下代码会报错:
data = json.loads(self.request.body)
错误信息
这是个编码问题,解决方案:
https://stackoverflow.com/questions/42683478/typeerror-the-json-object-must-be-str-not-bytes/42683509
data = json.loads(str(self.request.body.decode("utf-8")))
之前写http请求,获取数据是也遇到这个问题,对body进行"utf-8"编码之后,问题就解决了。
rootObj = json.loads(body.decode("utf-8"))