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.

Reply via email to