module Main where import Database.HDBC import Database.HDBC.Sqlite3 import Data.JSON2 import Data.JSON2.FromSQL dbName = "Examples/test.db" selectSql = "SELECT * from test" main = do conn <- connectSqlite3 dbName stmtSel <- prepare conn selectSql execute stmtSel [] q <- sFetchAllRows stmtSel mapM print q -- [Just "A",Just "1",Just "Pupkin",Just "1"] -- [Just "A",Just "2",Just "Sidorov",Just "2"] -- [Just "B",Just "22",Just "Petrov",Just "3"] -- [Just "B",Just "22",Just "Ivanov",Just "4"] -- [Just "B",Just "22",Just "Golubev",Just "5"] -- [Just "B",Just "33",Just "Petrov",Just "6"] let json = toJson (q :: [[Maybe String]]) pprint json -- [ -- ["A", "1", "Pupkin", "1"], -- ["A", "2", "Sidorov", "2"], -- ["B", "22", "Petrov", "3"], -- ["B", "22", "Ivanov", "4"], -- ["B", "22", "Golubev", "5"], -- ["B", "33", "Petrov", "6"] -- ] let json' = groupWithNCol 2 json pprint json' -- { -- "A": { -- "1": [["Pupkin", "1"]], -- "2": [["Sidorov", "2"]] -- }, -- "B": { -- "22": [["Petrov", "3"], ["Ivanov", "4"], ["Golubev", "5"]], -- "33": [["Petrov", "6"]] -- } -- } disconnect conn