在 Suave 中映射 json 输入但不映射输出


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 源代码,你会发现mapJsonmapJsonWith fromJson toJson 的简写。fromJsontoJson 函数分别是默认的 JSON 反序列化程序和序列化程序,但您可以创建自己的 - 或者只是使用 id 说"映射此方向而不更改它"。例如,

let oneWayMapJson = mapJsonWith fromJson id

请注意,我还没有对此进行测试,只是将其输入到堆栈溢出答案框中,因此可能需要进行一些调整。我现在没有时间扩展这个答案,但如果您需要比这个相当准系统的答案更多的帮助,请告诉我,我会在明天的某个时候尝试为您提供更多帮助。

最新更新