json2-0.2.1: This library provides support for JSON.

Data.JSON2.FromSQL

Synopsis

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