映射json输入但不输出Suave

Kur*_*ren 4 f# suave

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)

rmu*_*unn 5

如果你看看Suave源代码,你会发现这mapJson是简写mapJsonWith fromJson toJson.该fromJsontoJson功能是默认的JSON解串器和串行器(分别),但你可以改为创建自己的-或者只是用id说"不改变其映射这个方向".例如,

let oneWayMapJson = mapJsonWith fromJson id
Run Code Online (Sandbox Code Playgroud)

请注意,我没有对此进行测试,只需将其输入Stack Overflow应答框,因此可能需要进行一些调整.我现在没有时间扩展这个答案,但如果你需要更多的帮助而不是这个相当准确的回答,请告诉我,我会尽快给你更多的帮助.