hjsonpointer: JSON Pointer library

[ data, deprecated, library, mit ] [ Propose Tags ]

[Skip to Readme]
Versions [faq],,,,,,,,,,,,,,,, 1.1.1, 1.2.0, 1.3.0, 1.4.0, 1.5.0
Change log changelog.md
Dependencies aeson (>=0.7 && <1.4), base (>=4.9 && <5), hashable (==1.2.*), text (==1.2.*), unordered-containers (==0.2.*), vector (>=0.10 && <0.13) [details]
License MIT
Author Ian Grant Jeffries
Maintainer ian@housejeffries.com
Revised Revision 3 made by seagreen at 2019-09-03T02:13:26Z
Category Data
Home page https://github.com/seagreen/hjsonpointer
Uploaded by seagreen at 2018-09-30T18:32:26Z
Distributions Arch:1.5.0, NixOS:1.5.0
Downloads 13811 total (49 in the last 30 days)
Rating 1.75 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2018-09-30 [all 1 reports]


[Index] [Quick Jump]


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees

Readme for hjsonpointer-1.5.0

[back to package description]


JSON Pointer library for Haskell.

Hackage / GitHub / Travis CI


module Example where

import           Control.Monad (unless)
import           Data.Aeson
import qualified JSONPointer   as JP

main :: IO ()
main = do
    -- JSON Pointers must either be empty or start with a /.
    pntr1 <- case JP.unescape "/foo/0" of
                 Left _     -> error "Failed to construct JSON Pointer."
                 Right pntr -> return pntr

    -- We can also write JSON Pointers in Haskell.
    let pntr2 = JP.Pointer [JP.Token "/"]
    -- When we do this we don't have to escape / or ~ characters
    -- (as ~1 and ~0 respectively) like we do in an escaped JSON
    -- Pointer string.
    unless (JP.unescape "/~1" == Right pntr2) (error "ohno!")

    print (JP.resolve pntr1 document)
    print (JP.resolve pntr2 document)

    document :: Value
    document = object [ "foo" .= [String "bar", String "baz"]
                      , "/"   .= String "quux"


Right (String "bar")
Right (String "quux")