js_of_ocaml и Deriving_Json

Мне нужна помощь, чтобы заставить работать js_of_ocaml. В сети не так много информации об этом, и руководство очень скудное (нет фрагментов или примеров использования, нет разделов комментариев).

У меня на сервере есть модуль Card с записью card. Я отправляю card list клиенту с помощью Ajax, и там я хочу прочитать и просмотреть этот список. В итоге я получаю следующее:

let json = Json.unsafe_input (Js.string http_frame.XmlHttpRequest.content) in

... где json имеет тип 'a, согласно документации (конечно, не тогда, когда я его запускаю).

Я могу зарегистрировать json##length и получить правильную длину списка. Куда мне идти отсюда? В идеале я хотел бы использовать Deriving_Json, чтобы снова получить card list с типобезопасностью, но я также мог бы использовать цикл for (не такой элегантный, но какой угодно).


person Olle Härstedt    schedule 24.07.2013    source источник


Ответы (1)


Объявления типа, такие как type name = ... deriving(Json), создают Json_name модуль. Вот пример.

type card =  {a: int; b: string; } deriving(Json)
type t = card list deriving(Json)

let _ =
  let str = Json.to_string<t> [{a = 10; b = "abc";}; {a = 20; b = "xyz";}] in
  let rs = Json.from_string<t> str in
  Firebug.console##log(Js.string str);
  List.iter (fun r -> Firebug.console##log_2(r.a, Js.string r.b)) rs

И я не уверен, почему, я получил «Uncaught ReferenceError: unix_inet_addr_of_string не определен».

Итак, добавьте function unix_inet_addr_of_string () {return 0;} в файл js.

person zakki    schedule 25.07.2013