Suave.Json.mapJson 将输入JSON映射到函数中的对象,然后将函数的输出映射到JSON.
问题是我对它映射到我的函数的方式很满意,但是我需要返回一个json字符串响应,而不是让我将输出序列化为JSON.我怎样才能做到这一点?
目前我的输出序列化了两次.我的代码到目前为止:
let executeQuery : Query -> string = //Query is my deserialised json input, the return value is a json string
let app = POST >=> path "/graphql" >=> Json.mapJson executeQuery >=> setMimeType "application/json; charset=utf-8"
startWebServer defaultConfig app
Run Code Online (Sandbox Code Playgroud)
如果你看看Suave源代码,你会发现这mapJson是简写mapJsonWith fromJson toJson.该fromJson和toJson功能是默认的JSON解串器和串行器(分别),但你可以改为创建自己的-或者只是用id说"不改变其映射这个方向".例如,
let oneWayMapJson = mapJsonWith fromJson id
Run Code Online (Sandbox Code Playgroud)
请注意,我没有对此进行测试,只需将其输入Stack Overflow应答框,因此可能需要进行一些调整.我现在没有时间扩展这个答案,但如果你需要更多的帮助而不是这个相当准确的回答,请告诉我,我会尽快给你更多的帮助.