Locally cache a json file obtained by http

Version on this page:0.1.0
LTS Haskell 21.12:0.1.1
Stackage Nightly 2023-09-22:0.1.1
Latest on Hackage:0.1.1

See all snapshots cached-json-file appears in

BSD-3-Clause licensed and maintained by Jens Petersen
This version can be pinned in stack with:cached-json-file-0.1.0@sha256:dd5822f5fd007b094d0c275d92c6900adde60ee4f2e2b32dc16c08c8ca0eff16,2082

Module documentation for 0.1.0


A Haskell library providing a cached json file.

Useful for frequently used programs that use some remote json data which changes rather slowly (like in hours, days, weeks or months), where it is not critical to have always the latest data immediately.


getCachedJSON dir file url minutes caches the json obtained from url in ~/.cache/dir/file for minutes.


import System.Cached.JSON

getSnapshots :: IO Object
getSnapshots =
  getCachedJSON "stackage-snapshots" "snapshots.json" "" 180

main = getSnapshots >>= print

Each time you run this program within 3 hours the data will be read from the local cache file ~/.cache/stackage-snapshots/snapshots.json rather than re-downloading it each time, which helps to speed up the program and avoid unnecessary web queries.

There is also getCachedJSONQuery prog jsonfile webquery minutes which uses webquery :: (FromJSON a, ToJSON a) => IO a to download the json data.

Currently the smallest possible cache time is 1 minute.


Version history for cached-json-file

0.1.0 (2021-07-29)

  • initial release with getCachedJSON and getCachedJSONQuery
  • exports lookupKey from http-query