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
如果你看一下 Suave 源代码,你会发现mapJson
是 mapJsonWith fromJson toJson
的简写。fromJson
和 toJson
函数分别是默认的 JSON 反序列化程序和序列化程序,但您可以创建自己的 - 或者只是使用 id
说"映射此方向而不更改它"。例如,
let oneWayMapJson = mapJsonWith fromJson id
请注意,我还没有对此进行测试,只是将其输入到堆栈溢出答案框中,因此可能需要进行一些调整。我现在没有时间扩展这个答案,但如果您需要比这个相当准系统的答案更多的帮助,请告诉我,我会在明天的某个时候尝试为您提供更多帮助。