Question

J'utilise mochiweb et je ne sais pas comment utiliser son encodeur JSON pour faire face à la structure de données complexes. Quelle est la différence entre mochijson et mochijson2? Y at-il un bon exemple? Je reçois toujours les erreurs suivantes:

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
Était-ce utile?

La solution

mochijson2 fonctionne avec des chaînes sous forme de binaires, listes sous forme de tableaux, et ne décode que UTF-8. mochijson décode et code pour les points de code Unicode.

Pour créer une structure profonde, je l'ai fait ce qui suit:

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]

Donc, si vous créez récursive votre structure de données à l'aide des listes alors vous serez très bien. Je ne sais pas pourquoi struct profondes ne sont pas pris en charge, mais ils ne semblent pas être, au moins pas la façon dont vous essayez de les créer. Peut-être que quelqu'un d'autre connaît un moyen plus intelligent de le faire.

Vous pouvez également consulter ce fil: mochijson2 exemples

ou

Tutoriel vidéo pour commencer à développer des applications Web sur Erlang

Autres conseils

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

devrait plutôt être:

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

Les structures imbriquées doivent avoir le même style « struct » comme objet de niveau supérieur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top