为什么Flask不使用我的自定义json_encoder?

时间:2015-04-24 13:41:29

标签: python json flask

我有以下申请和测试:

app.py

import json                                                                     
from app import app                                                             


def test_this_should_work():                                                    
    test_client = app.test_client()                                             

    rv = test_client.get('/')                                                   

    assert json.loads(rv.data.decode()) == {'hello': 'world'}   

test_app.py

python app.py

尽管我可以从Application告诉我,我的代码应该可以工作并返回其他字典。但是,它没有。您可以通过py.test{"yep": "this worked"}(如果您安装py.test)运行它,并且您会发现两次都返回import javafx.application.Application; import static javafx.application.Application.launch; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.FlowPane; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class MainApp extends Application { @Override public void start(Stage stage) throws Exception { FlowPane flow = new FlowPane(); flow.setPrefSize(900, 30); Label label = new Label("Zoom 1.5"); Label labelStat = new Label("Users 7"); Label labelSec = new Label("Connected"); flow.getChildren().addAll(label, labelStat, labelSec); HBox hb = new HBox(); hb.getChildren().add(flow); Scene scene = new Scene(hb); stage.setTitle("JavaFX and Maven"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }

这里出了点问题 - 我错过了什么?

1 个答案:

答案 0 :(得分:5)

这不是Flask的问题,which does send the custom encoder。这就是Python的json库的工作方式。只有在无法识别被转储的对象时,才会调用default函数。由于您要转储字符串,这是图书馆识别的类型,因此它只是按原样转储。

如果要转换数据,请在序列化之前进行转换。

This recently came up on the Flask issue tracker as well.