h$ 0      !"#$%&'()*+,-./None0123456789:;<=None > json-stream)Public interface for parsing JSON tokens.? json-streamfound element, continuation, actual parsing view - so that we can report the unparsed data when the parsing finishes.>@?ABCDEFGHIJKNone LNone #$4LM BSD-stylepalkovsky.ondrej@gmail.com experimentalportableNone Z- json-stream>Result of parsing. Contains continuations to continue parsing. json-streamReturns a value from a parser. json-stream+Parser needs more data to continue parsing. json-stream"Parsing failed, error is reported. json-stream,Parsing finished, unparsed data is returned. json-streamA representation of the parser. json-streamMatch all items of an array. json-streamGenerate start/end values when an object is found, in between run a parser. The inner parser is not run if an array is not found. json-streamGenerate start/end values when an array is found, in between run a parser. The inner parser is not run if an array is not found.let test = "[[1,2,3],true,[],false,{\"key\":1}]" :: BS.ByteStringparseByteString (arrayOf (arrayFound 10 20 (1 .! integer))) test :: [Int][10,2,20,10,20]  json-streamMatch nith item in an array.  json-stream1Match all items of an array, add index to output.  json-streamMatch all key-value pairs of an object, return them as a tuple. If the source object defines same key multiple times, all values are matched.  json-streamMatch all key-value pairs of an object, return only values. If the source object defines same key multiple times, all values are matched. Keys are ignored.  json-streamMatch only specific key of an object. This function will return only the first matched value in an object even if the source JSON defines the key multiple times (in violation of the specification). json-stream Identical to fmap N . O but more efficient. If you don't care about the order of the results but plan to fully evaluate the list, this can be slightly more efficient than O& as it avoids the accumulating thunks. json-streamParse raw bytestring value (json string expected), skip parsing otherwise. The returned value is not unescaped. json-streamStops parsing string after the limit is reached. The string will not be matched if it exceeds the size. The size is the size of escaped string including escape characters. The return value is not unescaped. json-stream+Parse string value, skip parsing otherwise. json-streamStops parsing string after the limit is reached. The string will not be matched if it exceeds the size. The size is the size of escaped string including escape characters. json-stream*Parse number, return in scientific format. json-stream#Parse to bounded integer type (not P). If you are using integer numbers, use this parser. It skips the conversion JSON -> Q -> R and uses an R directly. json-streamParse to float/double. json-stream)Parse bool, skip if the type is not bool. json-streamMatch a null value. json-stream*Parses a field with a possible null value. json-streamMatch values with a S6. Returns values for which the given parser succeeds. json-streamMatch T value. Equivalent to  U.1let json = "[{\"key1\": [1,2], \"key2\": [5,6]}]"2parseByteString (arrayOf value) json :: [AE.Value][Object (fromList [("key2",Array [Number 5.0,Number 6.0]),("key1",Array [Number 1.0,Number 2.0])])] json-streamTake maximum n matching items.parseByteString (takeI 3 $ arrayOf integer) "[1,2,3,4,5,6,7,8,9,0]" :: [Int][1,2,3] json-stream)Let only items matching a condition pass.parseByteString (filterI (>5) $ arrayOf integer) "[1,2,3,4,5,6,7,8,9,0]" :: [Int] [6,7,8,9] json-streamA back-door for lifting of possibly failing actions. If an action fails with Left value, convert it into failure of parsing json-stream Synonym for   . Matches key in an object. The  operators can be chained.,let json = "{\"key1\": {\"nested-key\": 3}}"parseByteString ("key1" .: "nested-key" .: integer) json :: [Int][3] json-streamReturns V if value is null or does not exist or match. Otherwise returns W value. #key .:? val = optional (key .: val)  json-streamReturn default value if the parsers on the left hand didn't produce a result. p .| defval = p <|> pure defvalThe operator works on complete left side, the following statements are equal: Record <$> "key1" .: "nested-key" .: value .| defaultValue Record <$> (("key1" .: "nested-key" .: value) .| defaultValue)! json-stream Synonym for  . Matches n-th item in array.parseByteString (arrayOf (1 .! bool)) "[ [1,true,null], [2,false], [3]]" :: [Bool] [True,False]" json-stream(Run streaming parser with initial input.# json-stream*Run streaming parser, immediately returns .$ json-streamParse a bytestring, generate lazy list of parsed values. If an error occurs, throws an exception.6parseByteString (arrayOf integer) "[1,2,3,4]" :: [Int] [1,2,3,4]parseByteString (arrayOf ("name" .: string)) "[{\"name\":\"KIWI\"}, {\"name\":\"BIRD\"}]"["KIWI","BIRD"]% json-streamParse a lazy bytestring, generate lazy list of parsed values. If an error occurs, throws an exception.& json-stream#Deserialize a JSON value from lazy X.2If this fails due to incomplete or invalid input, V is returned.The input must consist solely of a JSON document, with no trailing data except for whitespace.' json-streamLike &2 but returns an error message when decoding fails.( json-streamLike &, but on strict Y) json-streamLike ', but on strict Y* json-streamMatch items from the first parser, if none is matched, return items from the second parser. Constant-space if second parser returns constant number of items.  $ is implemented using this operator.let json = "[{\"key1\": [1,2], \"key2\": [5,6], \"key3\": [8,9]}]"let parser = arrayOf $ "key1" .: (arrayOf value) <|> "key2" .: (arrayOf value)$parseByteString parser json :: [Int][1,2]let parser = arrayOf $ "key-non" .: (arrayOf value) <|> "key2" .: (arrayOf value)$parseByteString parser json :: [Int][5,6]O* - Gather matches and return them as list.let json = "[{\"keys\":[1,2], \"values\":[5,6]}, {\"keys\":[9,8], \"values\":[7,6]}]"let parser = arrayOf $ (,) <$> many ("keys" .: arrayOf integer) <*> many ("values" .: arrayOf integer)/parseByteString parser json :: [([Int], [Int])][([1,2],[5,6]),([9,8],[7,6])], json-streamZ will run both parsers in parallel yielding from both as the data comes:m +Data.Monoidlet test = "[{\"key1\": [1,2], \"key2\": [5,6], \"key3\": [8,9]}]"let parser = arrayOf $ "key1" .: (arrayOf value) <> "key2" .: (arrayOf value)$parseByteString parser test :: [Int] [1,2,5,6]- json-stream[7 will run both parsers in parallel and combine results.It behaves as a list functor (produces all combinations), but the typical use is::set -XOverloadedStringslet text = "[{\"name\": \"John\", \"age\": 20}, {\"age\": 30, \"name\": \"Frank\"}]"let parser = arrayOf $ (,) <$> "name" .: string <*> "age" .: integer-parseByteString parser text :: [(T.Text,Int)][("John",20),("Frank",30)]*  !"#$%&'()*#"$%&'() !  77 6!7      !"#$%&'()*+,-./01234566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUSVWXYZ[\]^_`ab acdaceSfgSfhijkilkSVmSVn*json-stream-0.4.4.0-LnQ9LMXzMflBzOYRkWZflxData.JsonStream.ParserData.JsonStream.CLexTypeData.JsonStream.TokenParserData.JsonStream.UnescapeData.JsonStream.CLexer ParseOutput ParseYield ParseNeedData ParseFailed ParseDoneParserarrayOf objectFound arrayFoundarrayWithIndexOfindexedArrayOf objectItems objectValues objectWithKey manyReverse byteStringsafeByteStringstring safeStringnumberintegerrealbooljNullnullable valueWithvaluetakeIfilterImapWithFailure.:.:?.|.! runParser' runParserparseByteStringparseLazyByteStringdecode eitherDecode decodeStricteitherDecodeStrict$fAlternativeParser$fSemigroupParser$fMonoidParser$fApplicativeParser$fFunctorParser$fFunctorParseResult LexResultType resNumber resStringresTrueresFalseresNull resOpenBrace resCloseBraceresOpenBracketresCloseBracketresStringPartialresNumberPartialresNumberSmall TokenResult PartialResult TokMoreData TokFailedElement ArrayBeginArrayEnd ObjectBegin ObjectEnd StringContent StringRaw StringEndJValueJInteger unescapeText tokenParserbaseGHC.ListreverseGHC.Basemanyinteger-wired-inGHC.Integer.TypeInteger(scientific-0.3.7.0-Hla2qTL9IB31jFPnTgbrxData.Scientific Scientificghc-prim GHC.TypesInt$aeson-2.0.3.0-3zDU5Fa111V9jb7YHc9wYjData.Aeson.Types.InternalData.Aeson.Types.FromJSONFromJSON parseJSON GHC.MaybeNothingJustbytestring-0.10.10.0Data.ByteString.Lazy.Internal ByteStringData.ByteString.Internal<><*>