Декодирование массива объектов JSON

Допустим, у меня есть этот массив объектов JSON:

[
  {"name": "foo", "tags": ["bird", "animal"], "age": 10},
  {"name": "bar", "tags": ["dog", "animal"], "age": 5},
  {"name": "baz", "tags": ["cat", "animal"], "age": 3}
]

Как я могу расшифровать это в ReasonML?


person Rotareti    schedule 19.04.2018    source источник


Ответы (1)


Использование bs-json для декодирования в массив записей:

let data = {|[
  {"name": "foo", "tags": ["bird", "animal"], "age": 10},
  {"name": "bar", "tags": ["dog", "animal"], "age": 5},
  {"name": "baz", "tags": ["cat", "animal"], "age": 3}
]|};

type t = {
  name: string,
  tags: array(string),
  age: int
};

module Decode = {
  let item = json =>
    Json.Decode.{
      name: json |> field("name", string),
      tags: json |> field("tags", array(string)),
      age:  json |> field("age", int)
    };

  let all =
    Json.Decode.array(item)
};

let result: array(t) =
  data |> Json.parseOrRaise
       |> Decode.all;
person glennsl    schedule 19.04.2018