Django2 序列化(json + xml) 野性酷女 2023-10-18 17:11 79阅读 0赞 第一步:创建json 序列化工具类:JSONUtil.py import json from django.core.serializers import serialize, deserialize from django.db import models from django.http import JsonResponse # json 序列化 def json_to_list(json): if json[0] == '[': deserializedObjectList = deserialize('json', json) else: deserializedObjectList = deserialize('json', '[' + json + ']') list = [] for deserializedObject in deserializedObjectList: list.append(deserializedObject.object) return list # 序列化 def to_json(obj): if isinstance(obj, models.Model): obj = [obj] # 因为serialize只支持可迭代对象,比如querySet对象 data = serialize("json", obj) return data # 该方法没有做严格的验证,只支持dict,models.Model,models.QuerySet,可以根据需要自行扩展 def render_json(data, dict_key='data', **response_kwargs): if isinstance(data, dict): return JsonResponse(data) data = to_json(data) if 'safe' in response_kwargs and response_kwargs['safe'] is False: pass else: data = {dict_key: data} # 默认必须传递字典数据 if isinstance(data, str): # 由于非字典类型的数据会被当做字符串处理,即返回结果两边都有引号,所以此处将其转换为对象,否则ajax调用时不方便处理 data = json.loads(data) return JsonResponse(data, **response_kwargs) 第二步:创建XML 序列化工具类:XMLUtil.py # -*- coding=utf-8 -*- from django.core import serializers from django.db import models from django.db.models.query import QuerySet from django.http import HttpResponse def render_xml(data): data = to_xml(data) response = HttpResponse(data) response['Content-Type'] = 'application/xml' return response # 序列化 def to_xml(data): if isinstance(data, models.Model): data = [data] # 因为serialize只支持可迭代对象,比如querySet对象 elif isinstance(data, QuerySet): data = data else: pass data = serializers.serialize("xml", data) return data # 反序列化 def xml_to_list(xml): deserializedObjectList = serializers.deserialize("xml", xml) list = [] for deserializedObject in deserializedObjectList: list.append(deserializedObject.object) return list 视图函数编写: # json 序列化 def json(request): book_list = Books.objects.all() return JSONUtil.render_json(book_list, safe=False) # xml 序列化 def xml(request): book_list = Books.objects.all() return XMLUtil.render_xml(book_list) 路由函数: from django.conf.urls import url from . import views urlpatterns = [ url('create/', views.create, name='create'), url('read', views.read, name='read'), url('update/', views.update, name='update'), url('delete/', views.delete, name='delete'), url('search', views.search, name='search'), url('json/', views.json), url('xml/', views.xml), ] 效果展示: ![20190416004410756.png][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3V6aGl3ZW5nYW5n_size_16_color_FFFFFF_t_70][] [20190416004410756.png]: https://img-blog.csdnimg.cn/20190416004410756.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3V6aGl3ZW5nYW5n_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/201904160045037.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3V6aGl3ZW5nYW5n,size_16,color_FFFFFF,t_70
相关 序列化反序列化挑战:JSON、XML等格式处理的示例 序列化和反序列化是数据存储和交换过程中的两个重要环节。这里以JSON(JavaScript Object Notation)和XML(Extensible Markup Lan 一时失言乱红尘/ 2024年10月19日 01:36/ 0 赞/ 18 阅读
相关 Java序列化与反序列化:JSON、XML和ObjectStreamException理解 Java中的序列化是将对象的状态信息以字节或文本形式存储的过程。反序列化则是将这些存储的信息还原为对象的过程。 常见的序列化格式有: 1. JSON(JavaScript 心已赠人/ 2024年09月11日 15:33/ 0 赞/ 28 阅读
相关 c#JSON序列化&反序列化 简介: JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全 爱被打了一巴掌/ 2024年03月25日 23:42/ 0 赞/ 69 阅读
相关 Django2 序列化(json + xml) 第一步:创建json 序列化工具类:JSONUtil.py import json from django.core.serializers import s 野性酷女/ 2023年10月18日 17:11/ 0 赞/ 80 阅读
相关 JSON序列化和反序列化 JSON是阿里巴巴开发的一款JSON处理工具包,提供了常用的JSON序列化(将Java对象转换为JSON字符串)和反序列化(将JSON字符串转换为Java对象)方法。下面是一些 秒速五厘米/ 2023年09月25日 23:43/ 0 赞/ 46 阅读
相关 SwiftUI-JSON序列化、反序列化 Swift5 自带解析 extension Encodable{ func toJson() -> String { 拼搏现实的明天。/ 2022年09月05日 12:49/ 0 赞/ 322 阅读
相关 Django ORM对象Json序列化问题 碰到了一个问题:在使用json.dumps()序列化Django ORM的Queryset对象,传递给前端的时候,程序报错: `Object of type 'QuerySe 悠悠/ 2022年06月01日 14:15/ 0 赞/ 312 阅读
相关 Json序列化与反序列化 Json概念 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算 墨蓝/ 2022年04月16日 04:06/ 0 赞/ 269 阅读
相关 Go:json(序列化、反序列化) 一、示例 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] package main - 日理万妓/ 2022年01月06日 21:25/ 0 赞/ 326 阅读
还没有评论,来说两句吧...