2013-07-24 29 views
6

Ho bisogno di aiuto per far funzionare js_of_ocaml. Non ci sono molte informazioni su di esso in rete, e il manuale è molto scarso (nessun frammento o esempi di utilizzo, nessuna sezione commenti).js_of_ocaml e Deriving_Json

Ho un modulo Card sul server con un record card. Sto inviando un card list al client usando Ajax, e lì voglio leggere e attraversare questo elenco. Quello che io alla fine con questo:

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

... dove json è di tipo 'a, in base alla documentazione (non quando l'eseguo, ovviamente).

È possibile registrare json##length e ottenere la lunghezza corretta dell'elenco. Dove vado da qui? Idealmente, mi piacerebbe usare Deriving_Json per digitare safe nuovamente card list, ma potrei anche usare un ciclo for (non elegante, ma qualunque cosa).

risposta

3

Dichiarazioni di tipo come type name = ... deriving(Json) crea il modulo Json_name. Ecco un esempio.

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 

E non so perché, ho ottenuto "Uncaught ReferenceError: unix_inet_addr_of_string non è definito".

Quindi aggiungere function unix_inet_addr_of_string() {return 0;} al file js.