Карта 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, поэтому может потребоваться некоторая настройка. У меня нет времени подробно останавливаться на этом ответе прямо сейчас, но если вам нужна больше помощи, чем этот довольно скромный ответ, дайте мне знать, и я постараюсь оказать вам больше помощи завтра.

Другие вопросы по тегам