2009-07-14 12 views
6

Ben mochiweb kullanıyorum ve karmaşık veri yapısı ile uğraşmak için json kodlayıcısını nasıl kullanacağımı bilmiyorum. Mochijson ve mochijson2 arasındaki farklar nelerdir? İyi bir örnek var mı? Dizilerin olarak ikili, listeleri gibi dizeleri ile çalışır ve yalnızca UTF-8 kodunu çözer mochijson2Erlang? Da veri yapısını kodlamak için mochijson nasıl kullanılır?

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 

cevap

11

: Hep aşağıdaki hataları olsun. mochijson unicode kod noktalarını çözer ve kodlar. özyinelemeli o zaman iyi olacak listeler kullanarak veri yapısı oluşturmak eğer

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] 

Yani:

aşağıdaki yaptım derin yapı oluşturmak için. Derin yapıların neden desteklenmediğinden emin değilim, ama en azından onları yaratmaya çalıştığınız gibi görünmüyorlar. Belki başka biri bunu yapmanın daha akıllıca bir yolunu bilir.

Ayrıca Konuyu bakabilirsiniz: mochijson2 examples!

veya

http://beebole.com/en/blog/erlang/tutorial-web-application-erlang/

4

T6 = {struct, [{Merhaba "asdf"}, {} "1", dan, { , {a, "aa"}}]}. Bunun yerine
T6 = {struct, [{hello, "asdf"}, {from, "1"}, {to, {struct, [{a, "aa"}]}}]} gibi bir
olmalıdır.

Yuvalanmış yapıların, üst düzey nesne ile aynı "struct" stiline sahip olması gerekir.

İlgili konular