python - 更改 python Flask/marshmallow 中的 json 属性顺序

标签 python flask marshmallow

我正在使用 Flask、sqlalchemy 和 marshmallow 编写一个简单的 REST API。默认情况下,模型始终序列化为具有按字母顺序排列的属性的 json。

有没有办法用 marshmallow 指定 json 属性的顺序?

例如:

class Sample(db.Model):
    y = db.Column(db.String(256), primary_key=True)
    x = db.Column(db.String(256))

    def __init__(self, y, x):
        self.x = x
        self.y = y

class SampleSchema(Schema):
    y = fields.Str()
    x = fields.Str()

@app.route('/sample')
def get_sample():
    dummy = Sample("MyY", "MyX")
    logger.info(dummy)
    schema = SampleSchema()
    return jsonify(schema.dump(dummy).data)

返回

{
  "x": "MyX", 
  "y": "MyY"
}

但我希望

{
  "y": "MyY", 
  "x": "MyX"
}

我知道 json 是一个无序集合,对客户端来说并不重要。然而,它更多的是用于开发过程中的调试目的和 pretty-print 。所以我希望有一个框架可以让我定义属性的顺序。

最佳答案

是的,您可以在 Schema's Class Meta 中设置 ordered = True :

class SampleSchema(Schema):
    class Meta:
        ordered = True

输出将根据类中定义字段的顺序进行排序。

关于python - 更改 python Flask/marshmallow 中的 json 属性顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34165754/

相关文章:

python - 命令提示符导致标签。 python 2.7

python - Pandas 的值(value)标签?

python - Flask - 在 Ajax/JQuery 中无需重定向即可更新页面内容

python - 需要在 Flask 中编写 View 函数的代码方面的帮助 - Python Web 框架

javascript - 了解 AJAX Post 请求到 Flask 端点期间的 400 错误

python - 尽管存在字段,但多对一关系中的 SQLAlchemy + Marshmallow 'Unknown field.' 错误

python - flask 棉花糖表序列化失败

python - 如何有效地将 Java 代码转换为 python?

python - 哪个性能更好 : len(a[:-1]) or len(a)-1

python - 如何将 'load_from' 和 'dump_to' 应用于棉花糖模式中的每个字段?