Frage

Ich kodieren einige Daten mochijson2 verwenden. Aber ich fand, dass es auf Strings als Listen seltsam verhält.

Beispiel:

  

mochijson2. Kodieren ( "foo")

     

[91, "102", 44 "111", 44 "111", 93]

Wenn "102", "111", "111" sind $ f, $ o, o als Strings codiert $ 44 sind Kommas und 91 und 93 sind quadratisch brakets.

Natürlich, wenn ich Ausgang dieses irgendwo ich String bekommen „[102111111]“, die offensichtlich nicht das, was ich was.

Wenn ich versuche,

  

mochijson2. Kodieren (<< "foo" >>)

     

[34, << "foo" >>, 34]

So ich wieder erhalte ich eine Liste mit zwei doublequotes und Binär-Teil, in dem übersetzt werden kann binär mit list_to_binary / 1

Hier ist die Frage - warum ist es so widersprüchlich. Ich verstehe, dass es ein Problem distingushing erlang Liste ist, die als JSON-Array und erlang String codiert werden sollen, die als JSON-String codiert werden sollen, aber zumindest kann es Ausgang binär, wenn ich übergebe es binär?

Und die zweite Frage: Sieht aus wie mochijson gibt alles schön (denn es spezielle Tupel zu bezeichnen Arrays verwendet {array, ...})

  

mochijson. Kodieren (<< "foo" >>)
  "\" Foo \ ""

Was ist der Unterschied zwischen mochijson2 und mochijson? Performance? Unicode-Behandlung? Sonst noch etwas?

Danke

War es hilfreich?

Lösung

Meine Vermutung ist, dass die Entscheidung in mochijson ist, dass es ein binäres als String behandelt und behandelt eine Liste von ganzen Zahlen als eine Liste von ganzen Zahlen. (Un?) Zum Glück Strings in Erlang ist in der Tat eine Liste von ganzen Zahlen.

Als Ergebnis Ihrer „foo“, oder mit anderen Worten, Ihr [102111111] in Text übersetzt darstellt „[102111111]“. Im zweiten Fall Ihr << "foo" >> Zeichenfolge wird "foo"

Im Hinblick auf die zweite Frage betrifft, scheint mochijson immer einen String zurück, während mochijson2 kehrt ein IOData Typ. Iodata ist im Grunde eine rekursive Liste von Strings, Binärdateien und iodatas (in der Tat iolists). Wenn Sie nur die Absicht, das Ergebnis „durch den Draht“ zu senden, ist es effizienter, nur Nest in einer Liste als wandeln sie in eine flache Schnur.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top