aeson-1.5.6.0: Fast JSON parsing and encoding
Copyright(c) 2011-2016 Bryan O'Sullivan
(c) 2011 MailRank Inc.
LicenseBSD3
MaintainerBryan O'Sullivan <bos@serpentine.com>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.Aeson.Parser.Internal

Description

Efficiently and correctly parse a JSON string. The string must be encoded as UTF-8.

Lazy parsers

json :: Parser Value Source #

Parse any JSON value.

The conversion of a parsed value to a Haskell value is deferred until the Haskell value is needed. This may improve performance if only a subset of the results of conversions are needed, but at a cost in thunk allocation.

This function is an alias for value . In aeson 0.8 and earlier, it parsed only object or array types, in conformance with the now-obsolete RFC 4627.

Warning

If an object contains duplicate keys, only the first one will be kept. For a more flexible alternative, see jsonWith .

jsonEOF :: Parser Value Source #

Parse a top-level JSON value followed by optional whitespace and end-of-input. See also: json .

jsonWith :: ([(Text, Value)] -> Either String Object) -> Parser Value Source #

Parse any JSON value.

This parser is parameterized by a function to construct an Object from a raw list of key-value pairs, where duplicates are preserved. The pairs appear in reverse order from the source.

Examples

Expand

json keeps only the first occurence of each key, using fromList .

json  = jsonWith  (Right  .  fromList )

jsonLast keeps the last occurence of each key, using fromListWith (const id ).

jsonLast  = jsonWith  (Right  .  fromListWith  (const  id ))

jsonAccum keeps wraps all values in arrays to keep duplicates, using fromListAccum .

jsonAccum  = jsonWith  (Right  . fromListAccum )

jsonNoDup fails if any object contains duplicate keys, using parseListNoDup .

jsonNoDup  = jsonWith  parseListNoDup 

jsonLast :: Parser Value Source #

Variant of json which keeps only the last occurence of every key.

jsonAccum :: Parser Value Source #

Variant of json wrapping all object mappings in Array to preserve key-value pairs with the same keys.

jsonNoDup :: Parser Value Source #

Variant of json which fails if any object contains duplicate keys.

value :: Parser Value Source #

Parse any JSON value. Synonym of json .

jstring :: Parser Text Source #

Parse a quoted JSON string.

jstring_ :: Parser Text Source #

Parse a string without a leading quote.

scientific :: Parser Scientific Source #

Parse a JSON number.

Strict parsers

json' :: Parser Value Source #

Parse any JSON value.

This is a strict version of json which avoids building up thunks during parsing; it performs all conversions immediately. Prefer this version if most of the JSON data needs to be accessed.

This function is an alias for value' . In aeson 0.8 and earlier, it parsed only object or array types, in conformance with the now-obsolete RFC 4627.

Warning

If an object contains duplicate keys, only the first one will be kept. For a more flexible alternative, see jsonWith' .

jsonEOF' :: Parser Value Source #

Parse a top-level JSON value followed by optional whitespace and end-of-input. See also: json' .

jsonWith' :: ([(Text, Value)] -> Either String Object) -> Parser Value Source #

Strict version of jsonWith .

jsonLast' :: Parser Value Source #

Variant of json' which keeps only the last occurence of every key.

jsonAccum' :: Parser Value Source #

Variant of json' wrapping all object mappings in Array to preserve key-value pairs with the same keys.

jsonNoDup' :: Parser Value Source #

Variant of json' which fails if any object contains duplicate keys.

value' :: Parser Value Source #

Strict version of value . Synonym of json' .

Helpers

decodeWith :: Parser Value -> (Value -> Result a) -> ByteString -> Maybe a Source #

decodeStrictWith :: Parser Value -> (Value -> Result a) -> ByteString -> Maybe a Source #

eitherDecodeWith :: Parser Value -> (Value -> IResult a) -> ByteString -> Either (JSONPath, String) a Source #

eitherDecodeStrictWith :: Parser Value -> (Value -> IResult a) -> ByteString -> Either (JSONPath, String) a Source #

Handling objects with duplicate keys

fromListAccum :: [(Text, Value)] -> Object Source #

fromListAccum kvs is an object mapping keys to arrays containing all associated values from the original list kvs.

>>> fromListAccum [("apple", Bool True), ("apple", Bool False), ("orange", Bool False)]
fromList [("apple",Array [Bool False,Bool True]),("orange",Array [Bool False])]

parseListNoDup :: [(Text, Value)] -> Either String Object Source #

fromListNoDup kvs fails if kvs contains duplicate keys.

AltStyle によって変換されたページ (->オリジナル) /