Невозможно безопасно преобразовать Js.Json.t
в Js.t
, поскольку последний представляет объект JavaScript, а JSON не просто представляет объекты. Но bs-axios
, похоже, в любом случае выбрасывает безопасность из окна, так что вы можете просто привести его небезопасно:
external jsonToObjects : Js.Json.t => Js.t({..}) = "%identity";
%identity
- это общий механизм, который можно использовать для приведения между любыми двумя типами, так что так же небезопасно, как и в отношении набора текста. Вы в основном говорите: «Отойди, пока я обмениваюсь этими вещами, и поверь мне, я знаю, что делаю». Поэтому убедитесь, что вы делаете.
Другой альтернативой является непосредственное создание объекта Js.t
. Для этого в Reason есть встроенный синтаксис, поэтому он довольно прост:
let obj = {
"data": someData
};
someData
здесь может быть любое значение, даже значение Js.Json.t
, но это также означает, что вы можете передавать значения, которые не являются Это не сериализуемо, что Js.Json.t
защищает вас от.
Учитывая, что API bs-axios
небезопасен по своей природе, здесь есть небольшой компромисс в отношении безопасности, но я думаю, что проще всего подойдет.