Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data JsonPartialValue
- class JsonPartialValueAt a where
- asInteger :: JsonPartialValue -> MQuery Integer
- asString :: JsonPartialValue -> MQuery String
- asText :: JsonPartialValue -> MQuery Text
- castAsInteger :: JsonPartialValue -> MQuery Integer
- entry :: JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
- hasKey :: Text -> JsonPartialValue -> Bool
- hasKV :: Text -> JsonPartialValue -> JsonPartialValue -> MQuery JsonPartialValue
- item :: JsonPartialValue -> MQuery JsonPartialValue
- jsonKeys :: JsonPartialValue -> [Text]
- jsonSize :: JsonPartialValue -> MQuery JsonPartialValue
- named :: Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
Documentation
data JsonPartialValue Source #
Partial JSON type.
This data type has an additional JsonPartialError
data constructor to indicate parsing
errors. This allows parsing to be more lazy because parsing errors may now be expressed
anywhere in the parsed document so the parser no longer needs to make a verdict about whether
there are any parsing errors in the entire document.
See jsonPartialJsonValueAt
on how to parse JSON text into this datatype.
Although this data type allows for lazier parsing it doesn't allow for sub-trees to be
garbage collected if a reference to an ancestor node is held. To avoid holding onto
sub-trees that are no longer needed without having to drop references to ancestors use
LightJson
instead.
JsonPartialString Text | |
JsonPartialNumber Double | |
JsonPartialObject [(Text, JsonPartialValue)] | |
JsonPartialArray [JsonPartialValue] | |
JsonPartialBool Bool | |
JsonPartialNull | |
JsonPartialError Text |
Instances
class JsonPartialValueAt a where Source #
jsonPartialJsonValueAt :: a -> JsonPartialValue Source #
Get a JSON partial value from another type
This function can always "succeed" because the data type it returns allows for the document value to contain an arbitrary number of errors. This means errors can be reported in document nodes as parsing occurs lazily.
There are garbage collection implementations you may want to consider. If you would like to be
able to hold onto ancestor nodes and still be able to garbage collect visited sub-trees, then
consider using lightJsonAt
instead.
Instances
JsonPartialValueAt JsonPartialIndex Source # | |
(BalancedParens w, Rank0 w, Rank1 w, Select1 v, TestBit w) => JsonPartialValueAt (GenericCursor ByteString v w) Source # | |
Defined in HaskellWorks.Data.Json.PartialValue |
entry :: JsonPartialValue -> MQuery (Entry Text JsonPartialValue) Source #
hasKV :: Text -> JsonPartialValue -> JsonPartialValue -> MQuery JsonPartialValue Source #
jsonKeys :: JsonPartialValue -> [Text] Source #
named :: Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue Source #