úÎ5®4     create empty JSON object merge two JSON Objects !recursive merge two JSON Objects merge list JSON Objects #recursive merge lists JSON Objects  Example:  & import Text.HJson hiding (toString)  import Text.HJson.Query  import Text.HJson.Pretty   -- Parse JSON  jParse :: String -> Json * jParse jstr = case (fromString jstr) of  Left l -> error l  Right json -> json   j0 = jParse "{}" N j1 = jParse "{\"Europa\": {\"Ukraine\": [\"Kiyv\", \"Gitomir\", \"Lviv\"]}}" 4 j2 = jParse "{\"Asia\": {\"Japan\": [\"Tokyo\"]}}" L j3 = jParse "{\"Europa\": {\"UnitedKingdom\": [\"London\", \"Glasgow\"]}}" C j4 = jParse "{\"Europa\": {\"Germany\": [\"Berlin\", \"Bonn\"]}}"  j5 = jParse "{\"Africa\": {}}" F j6 = jParse"{\"America\": {\"USA\": [], \"Canada\": [\"Toronto\"]}}" < j7 = jParse "{\"Australia\": [\"Melburn\", \"Adelaida\"]}" 4 merg = jMergesRec [j0, j1, j2, j3, j4, j5, j6, j7] & ex0 = putStrLn $ toString " " merg Result: {  "Africa": {  },  "America": {  "Canada": ["Toronto"],  "USA": []  },  "Asia": {  "Japan": ["Tokyo"]  }, ) "Australia": ["Melburn", "Adelaida"],  "Europa": { % "Germany": ["Berlin", "Bonn"], . "Ukraine": ["Kiyv", "Gitomir", "Lviv"], - "UnitedKingdom": ["London", "Glasgow"]  } } filter JSON objects filter JSON arrays  Example filter JSON strings filter JSON numbers filter JSON Bool filter JSON null filter primitive types "get elements from object with key #get elements from object with keys  Example:  F pprint js = mapM_ putStrLn $ map (toString " ") js --pretty print  7 query1 = getFromKeys ["Europa", "America", "Africa"]  json1 = query1 merg  ex1 = pprint json1 Result:  { # "Germany": ["Berlin", "Bonn"], , "Ukraine": ["Kiyv", "Gitomir", "Lviv"], + "UnitedKingdom": ["London", "Glasgow"]  }  {  "Canada": ["Toronto"],  "USA": []  }  {   } get all elements from object get all elements from array "get element from array with index %get elements from array with indexes 'get all elements from object and array filter combinators  Example:  ! query2 = query1 >>> getFromObj  json2 = query2 merg  ex2 = pprint json2 Result:  ["Berlin", "Bonn"]  ["Kiyv", "Gitomir", "Lviv"]  ["London", "Glasgow"]  ["Toronto"]  [] filter combinators filter combinators filter combinators filter combinators !tree traversal filter for object  tree traversal filter for array -tree traversal filter for objects and arrays  Example:  ; -- Qwery: All city Europa, America, Australia and Africa  -- q31, q32, q33 is equal  A q31 = getFromKeys ["Europa", "America", "Africa", "Australia"] ) >>> (getFromArr `orElse` getFromObj) # >>> (isStr `orElse` getFromArr)  A q32 = getFromKeys ["Europa", "America", "Africa", "Australia"] ! >>> (getFromObj `when` isObj)  >>> getFromArr  A q33 = getFromKeys ["Europa", "America", "Africa", "Australia"]  >>>  deep getFromArr   See also:  www.haskell.org/haskellwiki/HXT  | $pretty print query from JSON string S debug (deep isPrimitive) "[1, [false, true, [null]]]" == "[1, false, true, null]"          !hjson-query-0.4Text.HJson.QueryJFilterJsonsjEmptyjMerge jMergeRecjMerges jMergesRecisObjisArrisStrisNumisBoolisNull isPrimitive getFromKey getFromKeys getFromObj getFromArr getFromIndexgetFromIndexes getChildern>>><+>orElsewhenguardsdeepObjdeepArrdeepdebug jMmergeRec