2013-07-24 5 views
6

Potrzebuję pomocy, aby działało js_of_ocaml. Nie ma zbyt wielu informacji na ten temat w Internecie, a podręcznik jest bardzo rzadki (brak fragmentów lub przykładów użycia, brak sekcji komentarzy).js_of_ocaml i Deriving_Json

Mam moduł Card na serwerze z rekordem card. Wysyłam klientowi card list za pomocą Ajax i tam chcę go odczytać i przetestować. Co ja skończyć z jest to:

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

... gdzie json ma typ 'a, zgodnie z dokumentacją (nie po uruchomieniu go, oczywiście).

Mogę zalogować json##length i uzyskać prawidłową długość listy. Gdzie mogę się stąd udać? Najlepiej byłoby, gdyby użyłem Deriving_Json, aby ponownie wpisać card list, ale mogę też użyć pętli for (nie tak eleganckiej, ale cokolwiek).

Odpowiedz

3

Deklaracje typu, takie jak type name = ... deriving(Json), tworzą moduł Json_name. Oto przykład.

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 

I nie jestem pewien, dlaczego mam "Uncaught ReferenceError: unix_inet_addr_of_string nie jest zdefiniowana".

Dodaj więc function unix_inet_addr_of_string() {return 0;} do pliku js.