如何在Reason中将记录列表编码为JSON?

时间:2017-07-12 10:04:56

标签: json ocaml reason bucklescript

给出记录类型和记录列表:

type note = {
  text: string,
  id: string
};

let notes: list complete_note = [{text: "lol", id: "1"}, {text: "lol2", id: "2"}]

如何使用bs-json模块将其编码为JSON?

我尝试过:我尝试在bucklescript中使用字符串插值手动创建JSON字符串,但这绝对不是我想做的事情:)

notes
|> Array.of_list
|> Array.map (
  fun x => {
    // What should I do?
  }
)
|> Json.Encode.stringArray
|> Js.Json.stringify;

1 个答案:

答案 0 :(得分:3)

免责声明,我不是理性专家,所以代码可能不是惯用语。它也可能有错误,因为我没有安装BuckleScript,所以我没有测试它。

因此,如果要将每个注释表示为具有textid字段的JSON对象,则可以使用Js.Json.objectArray函数从数组中创建JSON文档JS词典。创建字典的最简单方法是使用Js.Dict.fromList函数,该函数采用对列表。

notes
|> Array.of_list
|> Array.map (fun {id, text} => {
  Js.Dict.fromList [("text", Js.Json.string text), ("id", Js.Json.string id)]
})
|> Js.Json.objectArray
|> Js.Json.stringify;