packages feed

vinyl-json-0.1.0.0: Data/Vinyl/JSON/Examples.hs

{-# LANGUAGE DataKinds
   , TypeOperators
   , OverloadedStrings
   , FlexibleInstances
   , ScopedTypeVariables
   , KindSignatures
   , FlexibleContexts
   #-}

module Data.Vinyl.JSON.Examples where

import Control.Applicative
import Control.Monad

import Data.Vinyl

-- import Data.ByteString as L
import Data.Aeson

import Data.Text as T

import GHC.TypeLits

import Data.Vinyl.JSON

-- Examples of use
--{-
example_json = "{\"name\": \"jon\", \"job\":\"Code\", \"age\":42, \"things\":[1,2,3] }"

nested_json = "{\"dad\" : { \"name\" : \"bob\" } }"

parsed_example :: Maybe (PlainRec '[("name" ::: Text),
                                    ("job"  ::: Text),
                                    ("age"  ::: Int),
                                    ("things" ::: [Int])])
parsed_example = decode example_json

parsed_nested :: Maybe (PlainRec '[("dad" ::: 
                            (PlainRec '[("name" ::: Text)]))])
parsed_nested = decode nested_json
--}