2

给定一个记录类型和一个记录列表:

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;
4

1 回答 1

3

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

因此,如果您想将每个笔记表示为带有textid字段的 JSON 对象,那么您可以使用Js.Json.objectArray函数从 JS 字典数组创建 JSON 文档。创建字典的最简单方法是使用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;
于 2017-07-12T13:56:14.067 回答