andre-dietrich / elm-generic / Generic.Json

decode : String -> Result String Generic.Value

Generic decoder function for any kind of Json value.

import Generic as Gen
import Generic.Json as Json

"""{
    "Herausgeber": "Xema",
    "Nummer": "1234-5678-9012-3456",
    "Deckung": 2e+6,
    "Waehrung": "EURO",
    "Inhaber":
    {
        "Name": "Mustermann",
        "Vorname": "Max",
        "maennlich": true,
        "Hobbys": ["Reiten", "Golfen", "Lesen"],
        "Alter": 42,
        "Kinder": [],
        "Partner": null
    }
}"""
    |> Json.decode
    |> Result.withDefault Gen.Null
    |> Gen.get [Gen.String "Inhaber", Gen.String "maennlich"]
    |> Maybe.map (Gen.toBool)
    --> Just True

encode : Generic.Value -> Json.Encode.Value

Generic encoder, which will translate any kind of Generic.Value back into a Json value.

import Generic as Gen
import Generic.Json as Json

"""{
    "Herausgeber": "Xema",
    "Nummer": "1234-5678-9012-3456",
    "Deckung": 2e+6,
    "Waehrung": "EURO",
    "Inhaber":
    {
        "Name": "Mustermann",
        "Vorname": "Max",
        "maennlich": true,
        "Hobbys": ["Reiten", "Golfen", "Lesen"],
        "Alter": 42,
        "Kinder": [],
        "Partner": null
    }
}"""
    |> Json.decode
    |> Result.withDefault Gen.Null
    |> Gen.set [Gen.String "Inhaber", Gen.String "maennlich"] (Gen.String "divers")
    |> Json.encode
    |> Json.toString 2
    --> "{\n  \"Deckung\": 2000000,\n  \"Herausgeber\": \"Xema\",\n  \"Inhaber\": {\n    \"Alter\": 42,\n    \"Hobbys\": [\n      \"Reiten\",\n      \"Golfen\",\n      \"Lesen\"\n    ],\n    \"Kinder\": [],\n    \"Name\": \"Mustermann\",\n    \"Partner\": null,\n    \"Vorname\": \"Max\",\n    \"maennlich\": \"divers\"\n  },\n  \"Nummer\": \"1234-5678-9012-3456\",\n  \"Waehrung\": \"EURO\"\n}"

toString : Basics.Int -> Json.Encode.Value -> String

A simple alias for Json.Encode.encode that outputs a String fo every Json value.

decodeString : String -> Generic.Value

Just a convenience functions, that decodes a Json string. If not possible, the result will be a generic Null.

decodeValue : Json.Decode.Value -> Generic.Value

Just a convenience functions, that decodes a Json value. If not possible, the result will be a generic Null.