module Main where import Data.JSON2 import Data.JSON2.Query citys :: Jsons citys = [ "Europa" .= "Ukraine" .= ["Kiyv", "Gitomir", "Lviv"], "Asia" .= "Japan" .= ["Tokyo"], "Europa" .= "UK" .= ["London", "Glasgow"], "Europa" .= "Germany" .= ["Berlin", "Bonn"], "America" .= "USA" .= ["NewYork"], "America" .= "Canada" .= ["Toronto"], "Australia" .= ["Melburn", "Adelaida"] ] ex0 = pprint citys jCitys = foldl mergeRec emptyObj citys ex1 = pprint jCitys query2 = getFromKeys ["Europa", "America", "Atlantida"] ex2 = pprint $ query2 jCitys query3 = getFromKeys ["Europa", "America"] >>> getFromObj ex3 = pprint $ query3 jCitys -- Query: All city Europa and Australia -- query31, query32, query33 is equal query31 = getFromKeys ["Europa", "Australia"] >>> (getFromArr `orElse` getFromObj) >>> (isStr `orElse` getFromArr) ex31 = pprint $ query31 jCitys query32 = getFromKeys ["Europa", "Australia"] >>> (getFromObj `when` isObj) >>> getFromArr ex32 = pprint $ query32 jCitys query33 = getFromKeys ["Europa", "Australia"] >>> deep getFromArr ex33 = pprint $ query33 jCitys