這篇文章主要介紹了python中model的objects對象怎么轉json的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇python中model的objects對象怎么轉json文章都會有所收獲,下面我們一起來看看吧。
創(chuàng)新互聯(lián)服務項目包括常德網站建設、常德網站制作、常德網頁制作以及常德網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,常德網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到常德省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
# objects_to_json: 將 model對象 轉化成 json
# json_to_objects: 將 將反序列化的json 轉為 model 對象
def json_field(field_data):
"""
將字典的鍵值轉化為對象
:param field_data:
:return:
"""
if isinstance(field_data, str):
return "\"" + field_data + "\""
elif isinstance(field_data, bool):
if field_data == 'False':
return 'false'
else:
return 'true'
elif isinstance(field_data, unicode):
return "\"" + field_data.encode('utf-8') + "\""
elif field_data is None:
return "\"\""
else:
return "\"" + str(field_data) + "\""
def json_encode_dict(dict_data):
"""
將字典轉化為json序列
:param dict_data:
:return:
"""
json_data = "{"
for (k, v) in dict_data.items():
json_data = json_data + json_field(k) + ':' + json_field(v) + ', '
json_data = json_data[:-2] + "}"
return json_data
def json_encode_list(list_data):
"""
將列表中的字典元素轉化為對象
:param list_data:
:return:
"""
json_res = "["
for item in list_data:
json_res = json_res + json_encode_dict(item) + ", "
return json_res[:-2] + "]"
def objects_to_json(objects, model):
"""
將 model對象 轉化成 json
example:
1. objects_to_json(Test.objects.get(test_id=1), EviewsUser)
2. objects_to_json(Test.objects.all(), EviewsUser)
:param objects: 已經調用all 或者 get 方法的對象
:param model: objects的 數(shù)據(jù)庫模型類
:return:
"""
from collections import Iterable
concrete_model = model._meta.concrete_model
list_data = []
# 處理不可迭代的 get 方法
if not isinstance(object, Iterable):
objects = [objects, ]
for obj in objects:
dict_data = {}
print concrete_model._meta.local_fields
for field in concrete_model._meta.local_fields:
if field.name == 'user_id':
continue
value = field.value_from_object(obj)
dict_data[field.name] = value
list_data.append(dict_data)
data = json_encode_list(list_data)
return data
def json_to_objects(json_str, model):
"""
將 將反序列化的json 轉為 model 對象
example:
Test model 預先定義
test_str = '[{"test_id":"0", "test_text":"hello json_to_objects"}]'
json_to_objects(json_str, model)
:param json_str:
:param model: objects的 數(shù)據(jù)庫模型類
:return:
"""
import ast
json_list = ast.literal_eval(json_str)
obj_list = []
field_key_list = [field.name for field in model._meta.concrete_model._meta.local_fields]
for item in json_list:
obj = model()
for field in item:
if field not in field_key_list:
raise ValueError('數(shù)據(jù)庫無 ' + field + ' 字段')
setattr(obj, field, item[field])
obj_list.append(obj)
return obj_list
關于“python中model的objects對象怎么轉json”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“python中model的objects對象怎么轉json”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。