Json.Encode

Functions for turning Gren values into Json values.

encode : Int -> Value -> String

Convert a Value into a prettified string. The first argument specifies the amount of indentation in the resulting string.

import Json.Encode as Encode

tom : Encode.Value
tom =
    Encode.object
        [ { key = "name", value = Encode.string "Tom" }
        , { key = "age", value = Encode.int 42 )
        ]

compact =
    Encode.encode 0 tom

-- {"name":"Tom","age":42}
readable =
    Encode.encode 4 tom

-- {
--     "name": "Tom",
--     "age": 42
-- }
type Value

Represents a JavaScript value.

Primitives

string : String -> Value

Turn a String into a JSON string.

import Json.Encode exposing (encode, string)


-- encode 0 (string "")      == "\"\""
-- encode 0 (string "abc")   == "\"abc\""
-- encode 0 (string "hello") == "\"hello\""
int : Int -> Value

Turn an Int into a JSON number.

import Json.Encode exposing (encode, int)


-- encode 0 (int 42) == "42"
-- encode 0 (int -7) == "-7"
-- encode 0 (int 0)  == "0"
float : Float -> Value

Turn a Float into a JSON number.

import Json.Encode exposing (encode, float)


-- encode 0 (float 3.14)     == "3.14"
-- encode 0 (float 1.618)    == "1.618"
-- encode 0 (float -42)      == "-42"
-- encode 0 (float NaN)      == "null"
-- encode 0 (float Infinity) == "null"

Note: Floating point numbers are defined in the IEEE 754 standard which is hardcoded into almost all CPUs. This standard allows Infinity and NaN. The JSON spec does not include these values, so we encode them both as null.

bool : Bool -> Value

Turn a Bool into a JSON boolean.

import Json.Encode exposing (bool, encode)


-- encode 0 (bool True)  == "true"
-- encode 0 (bool False) == "false"
null : Value

Create a JSON null value.

import Json.Encode exposing (encode, null)


-- encode 0 null == "null"

Arrays

array : (a -> Value) -> Array a -> Value

Turn a Array into a JSON array.

import Json.Encode as Encode exposing (array, bool, encode, int, string)


-- encode 0 (array int [1,3,4])       == "[1,3,4]"
-- encode 0 (array bool [True,False]) == "[true,false]"
-- encode 0 (array string ["a","b"])  == """["a","b"]"""
set : (a -> Value) -> Set a -> Value

Turn an Set into a JSON array.

Objects

object : Array { key : String, value : Value } -> Value

Create a JSON object.

import Json.Encode as Encode

tom : Encode.Value
tom =
    Encode.object
        [ { key = "name", value = Encode.string "Tom" }
        , { key = "age", value = Encode.int 42 }
        ]

-- Encode.encode 0 tom == """{"name":"Tom","age":42}"""
dict : (k -> String) -> (v -> Value) -> Dict k v -> Value

Turn a Dict into a JSON object.

import Dict exposing (Dict)
import Json.Encode as Encode

people : Dict String Int
people =
    Dict.fromArray [ { key = "Tom", value = 42 }, { key = "Sue", value = 38 } ]

-- Encode.encode 0 (Encode.dict identity Encode.int people)
--   == """{"Tom":42,"Sue":38}"""