Kodowanie niektórych danych za pomocą mochijson2. Ale odkryłem, że zachowuje się dziwnie w łańcuchach jako listach.mochijson2 lub mochijson
przykład:
mochijson2: kodowanie ("foo").
[91 "102", 44 "111", 44 "111", 93]
gdzie "102", "111", "111" są $ F $ O $ o zakodowane jako struny 44 są przecinkami, a 91 i 93 są kwadratowymi układami hamulcowymi.
Oczywiście, jeśli gdzieś to wyprowadzę, otrzymam ciąg "[102,111,11]", co oczywiście nie jest tym, co ja.
jeśli staram
mochijson2: kodowanie (< < "foo" >>).
[34, < < "foo" >>, 34]
Więc znowu ja dostać listę dwóch doublequotes i części binarnym, w którym mogą być tłumaczone na binarny z list_to_binary/1
Oto pytanie - dlaczego jest tak niekonsekwentne. Rozumiem, że istnieje problem z odróżnianiem listy erlang, która powinna być zakodowana jako tablica json i ciąg erlanga, który powinien być zakodowany jako łańcuch json, ale przynajmniej może wyprowadzić plik binarny po przekazaniu go binarnie?
I drugie pytanie: Wygląda mochijson wyprowadza wszystko Nicea (bo to wykorzystuje specjalne krotki do wyznaczenia macierzy {tablica, ...})
mochijson: kodowanie (< < "foo" >>).
"\" foo \ ""
Jaka jest różnica między mochijson2 i mochijson? Wydajność? Obsługa Unicode? Coś jeszcze?
Dzięki
Dzięki za odpowiedź, ale nadal nie wszystko jasne. Zgaduję: drugi przypadek, w którym twój ciąg znaków staje się "foo", nie jest prawdziwy, lub [34, <<"foo">>, 34] jest równoważny "foo"? co z obsługą utf-8 w mochijson? kiedy użyłem mochijson2 i dodałem opcję {utf8, true} do kodera. –
Wypróbuj erlang: iolist_to_binary ([34, <<"foo">>, 34]). 34 jest pojedynczą "postacią, <<"foo">> jest trzyczęściowym ciągiem foo (w/o"), a 34 jest kolejnym ". – Zed
Bez względu na to, że twoje wyjaśnienie dotyczące jodu jest jeszcze inny problem." Foo "nie jest prawidłowy JSON i nie można go przetłumaczyć na prawidłowy JSON –