Sto codificando alcuni dati usando mochijson2. Ma ho scoperto che si comporta in modo strano sulle stringhe come liste.mochijson2 o mochijson
Esempio:
mochijson2: encode ("foo").
[91, "102", 44 "111", 44 "111", 93]
Dove "102", "111", "111" sono $ f, $ o, $ o encoded come stringhe 44 sono le virgole e 91 e 93 sono le parentesi quadre.
Ovviamente se faccio l'output da qualche parte otterrò la stringa "[102,111,111]" che ovviamente non è quello che io cosa.
Se provo
mochijson2: encode (< < "foo" >>).
[34, < < "foo" >>, 34]
Così ho di nuovo ho un elenco di due doublequotes e parte binaria all'interno dei quali può essere tradotto in binario con list_to_binary/1
Ecco la domanda: perché è così incoerente. Capisco che c'è un problema nella lista di distribuzione che dovrebbe essere codificata come array json e stringa erlang che dovrebbe essere codificata come stringa json, ma almeno può emettere binari quando la passo binario?
E la seconda domanda: Sembra mochijson Uscite tutto bello (causa usa tuple speciale per designare gli array di array {...})
mochijson: encode (< < "foo" >>).
"\" foo \ ""
Qual è la differenza tra mochijson2 e mochijson? Prestazione? Gestione Unicode? Qualunque altra cosa?
Grazie
Grazie per la risposta, ma ancora non tutto chiaro. Immagino: il secondo caso la tua stringa <<"foo">> diventa "pippo" non è vera, o [34, <<"foo">>, 34] è equivalente a "pippo"? E il supporto di utf-8 in mochijson? quando ho usato mochijson2 ho aggiunto l'opzione {utf8, true} al codificatore. –
Prova a erlang: iolist_to_binary ([34, <<"foo">>, 34]). 34 è un singolo "carattere, <<"foo">> è la stringa lunga di tre caratteri foo (w/o"), e il 34 è un altro ". – Zed
Indipendentemente dal fatto che la spiegazione di iodata è ancora un altro problema." Foo "non è valido JSON e non può essere tradotto in JSON valido. –