Использование bs-json для декодирования объекта с динамическими ключами в корне - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь декодировать следующий объект JSON в объект Reason.

{"AAPL":{"price":217.36}}

Ключ в корне объекта является динамическим.

Следующий общий пример работает, когда ключ не находится в корне.Как бы я изменил его, чтобы он работал для динамического ключа в корне?

module Decode = {
    let obj = json =>
    Json.Decode.{
      static: json |> field("static",string),
      dynamics: json |> field("dynamics", dict(int)),
    };
};

1 Ответ

0 голосов
/ 16 октября 2018

Если ваши данные выглядят так:

let data = {| {
  "AAPL": { "price": 217.36 },
  "ABCD": { "price": 240.5 }
} |};

Вы можете получить Js.Dict со следующими данными:

module Decode = {
  open Json.Decode;
  let price = field("price", float);
  let obj = dict(price);
};

let decodedData = data |> Json.parseOrRaise |> Decode.obj;

let _ = decodedData->(Js.Dict.unsafeGet("AAPL")) |> Js.log;

Должно быть напечатано 217.36

...