Frage

Ich bin mit mochiweb und ich weiß nicht, wie seinen json-Encoder verwenden, um mit komplexer Datenstruktur zu befassen. Was ist der Unterschied zwischen mochijson und mochijson2? Gibt es ein gutes Beispiel? Ich bekomme immer folgende Fehler:

46> T6={struct,[{hello,"asdf"},{from,"1"},{to,{a,"aa"}}]}.
{struct,[{hello,"asdf"},{from,"1"},{to,{a,"aa"}}]}
47> mochijson2:encode(T6).                                
** exception exit: {json_encode,{bad_term,{a,"aa"}}}
     in function  mochijson2:json_encode/2
     in call from mochijson2:'-json_encode_proplist/2-fun-0-'/3
     in call from lists:foldl/3
     in call from mochijson2:json_encode_proplist/2


39> T3={struct,[{hello,"asdf"},{[{from,"1"},{to,"2"}]}]}.
{struct,[{hello,"asdf"},{[{from,"1"},{to,"2"}]}]}
40> mochijson:encode(T3).                                 
** exception error: no function clause matching mochijson:'-json_encode_proplist/2-fun-0-'({[{from,"1"},{to,"2"}]},
                                                                                           [44,"\"asdf\"",58,"\"hello\"",123],
                                                                                           {encoder,unicode,null})
     in function  lists:foldl/3
     in call from mochijson:json_encode_proplist/2
War es hilfreich?

Lösung

mochijson2 mit Strings als Binärdateien arbeitet, listet als Arrays und decodiert nur UTF-8. mochijson dekodiert und kodiert Unicode-Codepunkte.

Um eine tiefe Struktur zu erstellen Ich habe die folgenden:

2> L = {struct, [{key2, [192]}]}. 
{struct,[{key2,"?"}]}
3> 
3> L2 = {struct, [{key, L}]}.   
{struct,[{key,{struct,[{key2,"?"}]}}]}
4> 
4> mochijson:encode(L2).
[123,"\"key\"",58,
 [123,"\"key2\"",58,[34,"\\u00c0",34],125],
 125]

Wenn Sie also rekursiv Ihre Datenstruktur erstellen mit Listen dann werden Sie in Ordnung sein. Ich bin mir nicht sicher, warum tiefe Strukturen nicht unterstützt werden, aber sie scheinen nicht zu sein, zumindest nicht so, wie Sie versuchen, sie zu schaffen. Vielleicht hat jemand anderes kennt einen besseren Weg, dies zu tun.

Sie können auch diesen Thread Besuche: mochijson2 Beispiele

oder

Video-Tutorial zu starten Web-Anwendungen entwickeln auf Erlang

Andere Tipps

T6={struct, [{hello,"asdf"},{from,"1"},{to, {a,"aa"}} ]}.

sollte stattdessen sein:

T6={struct, [{hello,"asdf"},{from,"1"},{to, {struct, [{a,"aa"}]}} ]}.

Die verschachtelten Strukturen müssen den gleichen „Struktur“ Stil wie das Objekt der obersten Ebene haben.

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