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
答案 0 :(得分:5)
如果查看Suave source code,您会发现mapJson
是mapJsonWith fromJson toJson
的简写。 fromJson
和toJson
函数分别是默认的JSON反序列化器和序列化程序,但您可以创建自己的函数 - 或者只使用id
说“映射此方向而不更改它”。如,
let oneWayMapJson = mapJsonWith fromJson id
请注意,我没有对此进行测试,只需将其输入Stack Overflow应答框,因此可能需要进行一些调整。我现在没有时间扩展这个答案,但是如果你需要更多的帮助而不是这个相当准确的回答,请告诉我,我会尽快给你更多的帮助。