Как закодировать список записей в JSON в Reason?

Учитывая тип записи и список записей:

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

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

Как мне закодировать это в JSON, используя bs-json модуль?

То, что я пытался: я пытался вручную создать строку JSON, используя интерполяцию строк в пряжки, но это определенно не то, что я хочу сделать:)

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

1 ответ

Решение

Отказ от ответственности, я не эксперт по Reason, поэтому код может быть не идиоматическим. Также могут быть ошибки, так как у меня не установлен BuckleScript, поэтому я его не тестировал.

Итак, если вы хотите представить каждую заметку в виде объекта JSON с text а также id полей, то вы можете использовать функцию 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;
Другие вопросы по тегам