【问题标题】:Changing json attributes order in python flask/marshmallow在 python flask/marshmallow 中更改 json 属性顺序
【发布时间】:2015-12-08 20:49:15
【问题描述】:

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

有没有办法用棉花糖指定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 是一个无序的集合,对客户端来说并不重要。但是,它更多地用于开发和漂亮打印期间的调试目的。所以我希望有一个框架可以让我定义属性的顺序。

【问题讨论】:

    标签: python flask marshmallow


    【解决方案1】:

    可以,你可以在Schema's Class Meta中设置ordered = True

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多