packages feed

dead-simple-json-0.1.2: Example.hs

{-# LANGUAGE Haskell2010, TemplateHaskell, QuasiQuotes #-}

module Main where


import Text.Printf (printf)

import Text.DeadSimpleJSON
import Text.DeadSimpleJSON.TH

import Data.Ratio


main :: IO ()
main = do
    
    let jsonData = read "{\"seven\": 7, \"nine\": [1,2,4,8,16]}"
    print $ (jsonData ? "nine[3]" :: Int)

    let jone = [json|
                    [
                        {
                            "one": 0.1,
                            "two": 123
                        },
                        {
                            "one": true,
                            "two": null,
                            "three": 23412349.24e-12
                        },
                        {
                            "one": "ONE",
                            "two": null,
                            "three": "THREE"
                        },
                        {
                            "one": false,
                            "two": 14964674393249287
                        }
                    ]
                |]
        jtwo = jone -- [jsonF|json2.txt|]
        jtri = [json| ["Naks", "Noks", "Nuks"] |]
        jfrr = jone -- read [sF|json2.txt|] :: JSON

        val1 = [jsq| jone[3].two |] :: String
        val2 = [jsq| jtwo[4] |]     :: Double
        val3 = [jsq| jtri |]        :: String

    print $ length $ show jfrr
    print $ length $ show jtwo

    print val1
    print val2
    print val3