Карта JSON ввода, но не выводится в 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
1 ответ
Если вы посмотрите на исходный код Suave, вы увидите, что mapJson
это сокращение для mapJsonWith fromJson toJson
, fromJson
а также toJson
функции являются десериализатором и сериализатором JSON по умолчанию (соответственно), но вы можете вместо этого создать свой собственный - или просто использовать id
сказать "наметить это направление, не меняя его". Например,
let oneWayMapJson = mapJsonWith fromJson id
Обратите внимание, что я не проверял это, просто набрал его в поле ответа Stack Overflow, поэтому может потребоваться некоторая настройка. У меня нет времени подробно останавливаться на этом ответе прямо сейчас, но если вам нужна больше помощи, чем этот довольно скромный ответ, дайте мне знать, и я постараюсь оказать вам больше помощи завтра.