首先我們來看一段 python **
from flask import flask, jsonify
tasks =[,
]'/api/v1.0/tasks'
, methods=
['get'])
defget_tasks()
:return jsonify(
)if __name__ ==
'__main__'
:true
)
在這段**裡面,我們看到了今天的主角jsonify
。
flask 框架裡,可以用jsonify
返回 json 資料,但是為什麼不用python
自帶的json
模組返回 json 資料呢?
其實,jsonify
在處理資料過程中,對資料做 json 序列化處理時,用的是itsdangerous
模組裡的 json ,讓我們看一下,這個模組裡的 json 是如何引入的
try
:import ******json as json
except importerror:
import json
它會先嘗試引入******json
,如果沒有安裝這個模組,則引入 python 原生模。
在flask框架中,引入過程如下
from itsdangerous import json as _json
對於資料的序列化處理,用的正是_json
.
前面講到,jsonify
和json
是殊途同歸,那麼為什麼要費周折繞這麼一圈呢?
肯定存在乙個合理的原因讓jsonify
存在的有意義。
這個原因就是content-type
看下面兩段**
第一段**
## jsonify
import json
from flask import flask, jsonify
'/json'
)def
test_json()
: data =
return jsonify(data)
"0.0.0.0"
, port=
9877
)
在瀏覽器裡輸入 得到的結果是
第二段**:
## json
import json
from flask import flask, jsonify
'/json'
)def
test_json()
: data =
return json.dumps(data)
"0.0.0.0"
, port=
9877
)
在瀏覽器裡輸入 得到的結果是
從內容上看,兩種方法沒有區別。
但是使用jsonify
時,返回的http response
的content-type
是
而使用json.dumps時,content-type則是
content-type: text/html; charset=utf-
8
使用jsonify
除了讓返回的 `http response符合 http 協議,同時也對資料做了壓縮處理,讓資料體積更小。
仔細比較上面兩種方法返回的資料,雖然內容相同,但jsonify
返回的資料,每個key-value
對之間的逗號,和每個key
與value
之間的冒號後面都是沒有空格的,而json.dumps
返回的資料裡,卻在逗號和冒號後面存在空格,因此即便內容相同,jsonify
返回的資料體積更小,更節省流量。
其實,json.dumps
也可以將這些不必要的空格去掉,看下面的**
import json
data =
print
(json.dumps(data, separators=
(','
,':'))
)print
(json.dumps(data)
)
輸出結果為
只需要在dumps
引數裡指定separators
即可,其實在jsonify
裡就是這麼幹的。 聊一聊我的二 二
我是乙個二 二一年六月畢業的學軟體技術的大專生 也就是明年畢業 對於任何人來說,這一年裡是充滿挑戰的。可能乙個小小的想法,就會決定未來的走向。二 二 是對於所有人都是複雜的一年,特別是對於我.二 二 一年裡充滿了對於我是充滿悲傷的,疫情爆發,長輩離世,面臨就業問題等等,各種我不敢面對的事情。都出現在...
聊一聊PHP的global
眾所周知,在php的函式中,如果想使用全域性變數,一種是使用超全域性變數 globals,另一種是在函式中使用global關鍵字宣告,使用超全域性變數 globals的方式大家都知道了,今天來好好聊一聊使用global方式來宣告變數。我們來看如下例子 a 1 b 2 function test te...
聊一聊google的Knowledge Graph
它是google用於增強它的搜尋引擎的功能和提高搜尋結果質量的一種技術。在2012年5月16日提出,除了提供基本的與主題相關的鏈結服務之外,它還能結構化與主題相關的資訊。這樣做的目的就是讓使用者無需通過點選多個相關鏈結自己手動去搜尋相關資訊,而是google直接把整合好的結果展示在搜尋頁面,真是太貼...