You can do this with a Dict but it's a little fiddly because you need to
use an ADT to represent the different types of the values
import Html
import Json.Decode as JD
import Dict
import String
json : String
json =
"""
[{"a": 1, "foo": "bar", "bar": "baz"},
{"a": 2, "foo": "baz", "bar": "foo"},
{"a": 34, "foo": "big", "bar": "lebowski"}]
"""
type ValueType = StringType String | IntType Int
valueTypeDecoder =
JD.oneOf
[ JD.map StringType JD.string
, JD.map IntType JD.int
]
gen_keys : String -> String
gen_keys json =
json
|> JD.decodeString (JD.list <| JD.dict valueTypeDecoder)
|> Result.toMaybe
|> flip Maybe.andThen List.head
|> Maybe.map Dict.keys
|> Maybe.withDefault []
|> String.join ","
main : Html.Html string
main =
Html.text (gen_keys json)
On Saturday, 17 September 2016 00:52:20 UTC+2, Gary Young wrote:
>
> In short. Solve this:
>
> module Main exposing (..)
>
> import Html
>
>
> -- import Json.Decode exposing (Decoder, decodeString, keyValuePairs)
>
>
> json : String
> json =
> """[{a: 1, foo: "bar", bar: "baz"},
> {a: 2, foo: "baz", bar: "foo"},
> {a: 34, foo: "big", bar: "lebowski"}]"""
>
>
> gen_keys : String -> String
> gen_keys json =
> -- Decode the first JSON record and return a comma separated
> -- list of keys
> json
>
>
> main : Html.Html string
> main =
> Html.text (gen_keys json)
>
>
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.