jsongostruct というのを書いた

Mozilla 年忘れハッカソン : ATND に行く機会があったので soh335/jsongostruct · GitHub というのを書きました。

最近 go を書いてなかったので、復習がてら与えられた json から対応する go の sutrct を吐くものを書いてみました。

ただ、print してくだけだとちょっと面白くないかなと思ったので go の標準モジュールに入っている抽象構文木(go/ast)から生成するようにしてみました。なのでインデントとかは go 側に任せてます。(一部まだ分からないところがあってインデントが上手くいかないところがあるけど)

cat /path/to/jsonfile | jsongostruct

こんな感じでこんなのを食わせると

{
  "url": "http://example.com",
  "id": 12345,
  "name": "web",
  "bool": true,
  "array": [
    "foo",
    "bar"
  ],
  "map": {
    "foo": "bar",
    "dameleon": "dame"
  }
}

こういうのが吐かれます。

type XXX struct {
        Url   string   `json:"url"`
        Id    float64  `json:"id"`
        Name  string   `json:"name"`
        Bool  bool     `json:"bool"`
        Array []string `json:"array"`
        Map   struct {
                Foo      string `json:"foo"`
                Dameleon string `json:"dameleon"`
        } `json:"map"`
}