解码JSON对象数组

时间:2018-04-19 11:36:52

标签: json reason bucklescript

我们说我有这个JSON对象数组:

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

如何在ReasonML中对此进行解码?

1 个答案:

答案 0 :(得分:3)

使用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;