美文网首页
Flask 数据json序列化(四)

Flask 数据json序列化(四)

作者: andpy | 来源:发表于2018-06-21 15:31 被阅读418次

Flask 数据json序列化

Flask对数据直接序列化是有要求,对非常规的数据需要进行特殊配置的操作

扩展 JSONEncoder

from datetime import date

from flask.json import JSONEncoder as _JSONEncoder
from flask import Flask as _Flask

# 类变量是不会存储到 dict中,只有实例变量才可以
from app.libs.error_code import ServerError


# 自定义json 序列化器
class JSONEncoder(_JSONEncoder):
    def default(self, o):
        if hasattr(o, 'keys') and hasattr(o, '__getitem__'):
            return dict(o)
        if isinstance(o, date):
            return o.strftime('%Y-%m-%d')
        raise ServerError()


# 使用自己的 json_encoder 代替falsk 原生的 json_encoder
class Flask(_Flask):
    json_encoder = JSONEncoder    

使用这种方式必须,重写两个方法
在base model中

def __getitem__(self, item):
    return getattr(self, item)

def keys(self):
    return self.fields

#不需要返回的字段
def hide(self, *keys):
    for key in keys:
        self.fields.remove(key)
    return self
#需要返回的字段
def append(self, *keys):
    for key in keys:
        self.fields.append(key)
    return self

在子类mdoel中:定义默认要返回json的字段

@orm.reconstructor
def __init__(self):
    self.fields = ['id', 'title', 'author', 'binding',
                   'publisher',
                   'price','pages', 'pubdate', 'isbn',
                   'summary',
                   'image']

Python json 序列化相关

python可以直接序列化字典 dict

d ={'name':'flask'}

序列化对象属性不包含对象的实例:

class Demo:
    self.name ='falsk'
    self.age =34
//直接使用 __dict__

demo.__dict

序列化对象属性含有对象的实例:使用自定义函数
这种思想在 sorted,filter中都有实现,将本身不能实现的规则抛出来,让比人自己实现。

class Demo
    self.name ='flask'  
    self.name =Object

// 直接使用json 中dumps 函数中的 default属性,将不可以序列化的对象转换为可以序列化的字典
json.dumps(books, default=lambda o: o.__dict__)

相关文章

  • Flask 数据json序列化(四)

    Flask 数据json序列化 Flask对数据直接序列化是有要求,对非常规的数据需要进行特殊配置的操作 扩展 J...

  • request.json

    flask获取json数据,request.json, from flask import Flask,reque...

  • iOS JSON 数据解析

    (1)JSON数据->OC对象(反序列化) (2)OC对象->JSON对象(序列化) (3)OC对象和JSON数据...

  • 序列化,序列化高级

    序列化 序列化:把对象(Dict)转成可传输数据(JSON) 反序列化:把传输数据(json)转成对象(Dict)...

  • 网络

    NSURLConnection NSURLSession 普通网络请求 JSON数据解析 JSON序列化 数据解析...

  • flask向前台返回json数据和后台生成uuid

    一.返回给前台json数据 引入from flask import Flask, request,jsonify,...

  • Json & Gson

    1 Json 定义:轻量级的数据交换格式2 json反序列化成bean,bean序列化成json,都是通Json解...

  • 4.django返回json格式数

    Django数据序列化 1.Python json模块 介绍Json Json(Javascript Object...

  • 062 Python语法之Json介绍

    json局限 json不能序列化方法 json序列化 json反序列化

  • 多线程网络-5

    Xmind ①发送请求拿到JSON数据后如何序列化(解析) ②如何把OC对象转换为JSON ③JSON数据和OC对...

网友评论

      本文标题:Flask 数据json序列化(四)

      本文链接:https://www.haomeiwen.com/subject/oozqyftx.html