2015-12-08 48 views
1

我正在使用flask,sqlalchemy和棉花糖編寫簡單的REST API。默認情況下,模型總是按照字母排序的屬性序列化爲json。在python瓶/棉花糖中更改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是一個無序的,它不要緊客戶端。但是,在開發和漂亮打印過程中,這更多用於調試目的。所以我期望一個框架讓我定義屬性的順序。

回答

3

是的,你可以在Schema's Class Meta設置ordered = True

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

輸出將根據該字段在類中定義的順序進行排序。