目录
一、作用
(一)代码块存入数据库
(二)前后端传递数据
1. 前端
(1)JSON.stringify()
(2)JSON.parse()
2. 后端
(1)json.dumps()
(2)json.loads()
(3)json.loads() 问题:JSONDecodeError('Expecting property name enclosed in double quotes: line 1 column 2 (char 1)')
(4)python 的 requests 库的 json()
3. 前后端的传值格式
(三)查看对象格式
序列化:将内存中的不可持久化和传输对象,转换为可方便持久化和传输对象的过程。
将一段方法的代码块,进行序列化,完整的存入到数据库中。
当调用数据库的这段序列化数据时,依旧可以执行这个代码块。
将一个 JavaScript 对象或值编码为json字符串。 (包成JSON)
用来解析json字符串,还原由字符串包裹的JavaScript值或对象。 (解除JSON)
注意:前端转换JSON格式时,是大写的JSON
① 理解
将 Python 对象编码为json字符串。(包成JSON)
常用于处理前、后端相互传递的数据。
② 写法
使用 json.dumps(),而不是json.dump()。
前者是字符串,后者是文件流。
③ 例子
import json
def post(self, request)
res = request.data
res = json.dumps(res) # 即可获得字串数据
将json字符串解码为 Python 数据类型。(解除JSON)
例如:前端的阵列 AA ,使用 JSON.stringify() 编码 -> 得到 json 格式的值 BB ( str 格式,包裹着阵列) -> 后端接收的BB,使用 json.loads() 解码 -> 得到列表值CC。
原因:
json.loads() 里的值若是字串包字典,则字典中的key,必须有双引号!!无论是单引号,还是无引号,都会报错。
解决:若字串里的字典格式无误,只是单引号的问题,则将单引号转换为双引号
import json
mystr.replace("\'", "\"")
res = json.loads(mystr)
① 理解
处理API请求返回后的数据。
② 例子
import requests
response = requests.get('http://www.XXX.com', params=data) # 获得API调用后得到的结果数据
res = response.json() # 将API结果数据字串化
(1)前端传后端时,无论是“阵列”或是“字典”,都应该用JSON格式包裹。
(2)后端传前端时,一般用JsonResponse。或者在前端ajax处加一属性:dataType:'json' 。
dataType: 'json'的作用是:不用判断后端传的数据,是否为JSON格式、是否需要用JSON.parse()处理。
参考另一篇文章:Backend - Django JsonResponse & HttpResponse-CSDN博客
使用网上工具:http://json.parser.online.fr/