我正在使用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是一个无序集合,对客户端来说无关紧要。但是,在开发和漂亮的打印过程中,它更适用于调试目的。所以我希望有一个框架让我定义属性的顺序。
答案 0 :(得分:3)
是的,您可以在Schema's Class Meta:
中设置JFrame frame = new JFrame("ORDERING FOOD APPLICATION");
JPanel panel = new JPanel();
ImageIcon icon = new ImageIcon("hamburger.jpg");
frame.setIconImage(icon.getImage());
try {
frame.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("fd12.jpg")))));
} catch (IOException e) {
e.printStackTrace();
}
frame.setLayout(new GridBagLayout());
JButton btn = new JButton("Click me");
frame.add(btn);
frame.pack();
frame.setVisible(true);
JLabel
将根据在类中定义字段的顺序对输出进行排序。