packages feed

hjson-query-0.4: examples/Example1.hs

import Text.HJson hiding (toString)
import Text.HJson.Query
import Text.HJson.Pretty as PP 

-- parse JSON
jParse :: String -> Json
jParse jstr = case (fromString  jstr) of
    Left l  -> error l
    Right json -> json

j0 = jParse "{}"
j1 = jParse "{\"Europa\": {\"Ukraine\": [\"Kiyv\", \"Gitomir\", \"Lviv\"]}}"
j2 = jParse "{\"Asia\": {\"Japan\": [\"Tokyo\"]}}"
j3 = jParse "{\"Europa\": {\"UnitedKingdom\": [\"London\", \"Glasgow\"]}}"
j4 = jParse "{\"Europa\": {\"Germany\": [\"Berlin\", \"Bonn\"]}}"
j5 = jParse "{\"Africa\": {}}"
j6 = jParse"{\"America\": {\"USA\": [], \"Canada\": [\"Toronto\"]}}"
j7 = jParse "{\"Australia\": [\"Melburn\", \"Adelaida\"]}"
merg = jMergesRec [j0, j1, j2, j3, j4, j5, j6, j7]
ex0 = putStrLn $ toString "   " merg
---------------------------------------------------------------------------

pprint js = mapM_ putStrLn $ map (toString "   ") js --pretty print 

query1 = getFromKeys ["Europa", "America", "Africa"] 
json1 = query1 merg 
ex1 = pprint json1
---------------------------------------------------------------------------
record1 =  fromString "[\"Sidoroff\",\"Jhon\",1975,null]"
ex11 = getFromIndexes [3,1,0] `fmap` record1

---------------------------------------------------------------------------

query2 = query1 >>> getFromObj 
json2 = query2 merg
ex2 = pprint json2
---------------------------------------------------------------------------

-- Qwery:  All citys Europa, America, Australia and Africa
q31 = getFromKeys ["Europa", "America", "Africa", "Australia"] 
  >>> (getFromArr `orElse`  getFromObj)
  >>> (isStr `orElse` getFromArr)
ex31 = pprint $ q31 merg

q32 = getFromKeys ["Europa", "America", "Africa", "Australia"] 
  >>> (getFromObj `when` isObj)
  >>> getFromArr
ex32 = pprint $ q32 merg

q33 = getFromKeys ["Europa", "America", "Africa", "Australia"] 
  >>> 
  deep getFromArr
ex33 = pprint $ q33 merg

----------------------------------------------------------------------------
ex4 = debug (deep isPrimitive) "[1,[false, true, [null]]]"