Записать JSON в файл как ленивый ByteString непосредственно из выходных данных кодирования Aeson без преобразования в строку
В настоящее время я использую что-то вроде этого для написания контента JSON (my_json
) в файл (my_output_filepath
):
import Data.Aeson.Encode.Pretty
import qualified Data.ByteString.Lazy.UTF8 as U
writeFile my_output_filepath $ U.toString $ encodePretty my_json
Это работает, но мне интересно, нужно ли конвертировать ByteString
что возвращается (encodePretty
) к String
перед записью в файл или если это повлечет за собой снижение производительности.
Я вижу, есть вариант writeFile
который принимает ByteString
в качестве ввода. Однако, когда я пытаюсь использовать его, я получаю эту ошибку:
Couldn't match expected type ‘B.ByteString’
with actual type ‘U.ByteString’
NB: ‘B.ByteString’ is defined in ‘Data.ByteString.Internal’
‘U.ByteString’ is defined in ‘Data.ByteString.Lazy.Internal’
Есть ли способ получить Lazy
вариант ByteString
взаимодействовать с writeFile
?