4

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
4

1 回答 1

5

如果您查看Suave 源代码,您会发现它mapJsonmapJsonWith fromJson toJson. fromJson和函数是默认的toJsonJSON 反序列化器和序列化器(分别),但您可以创建自己的 - 或者只是用id来说“映射这个方向而不改变它”。例如,

let oneWayMapJson = mapJsonWith fromJson id

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

于 2017-05-20T16:34:44.357 回答