Data.JSON2.FromSQL
- groupWithCol :: Json -> Json
- groupWithNCol :: Int -> Json -> Json
Documentation
groupWithCol :: Json -> JsonSource
Conversion SQL-like JSON array to tree-like JSON object with use column.
groupWithNCol :: Int -> Json -> JsonSource
Conversion SQL-like JSON array to tree-like JSON object with use columns.
COMPLEX EXAMPLE :
import Database.HDBC
import Database.HDBC.Sqlite3
import Data.JSON2
dbName = "..."
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