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

How to encode a list of records to JSON in Reason?

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

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;

免责声明,我不是 Reason 专家,因此代码可能不符合地道。也可能有错误,因为我没有安装BuckleScript,所以没有测试。

因此,如果您想将每个音符表示为具有 textid 字段的 JSON 对象,那么您可以使用 Js.Json.objectArray function to create a JSON document from an array of JS dictionaries. The easiest way to create a dictionary would be to use the 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;