Django-fr

Forum

#1 24-01-2011 16:13:27

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

dans la serie json

Bonjour

je serialise en json là ça semble fonctionner ... tjs en mode moufle

en reponse(ou requete)  je reçois du json aussi du type

http://mydomain.name/?request={"version":"1.0","code":"0101","param":{"contenua":"de
l'huile","contenub":"du sucre"}}

mais à la déseralization

il exulte un message d'erreur WSGIrequest has no attribute 'read'  un souci
avec simplejson

voici ma methode de désarialize :

   objectrequest = [ ]
    for obj in serializers.deserialize("json",request):
        objectrequest.version = obj.version
        objectrequest.code = obj.code
        objectrequest.param = obj.param

faut il traiter la request avant  de déserializer un cast ou autre
transformation ?

Merci de vos explications

tonton

Hors ligne

#2 26-01-2011 10:16:09

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : dans la serie json

2011/1/24 Tonton <to.tonton _AT_ gmail.com>

> Bonjour
> en reponse(ou requete)  je reçois du json aussi du type
> http://mydomain.name/?request={ <http://mydomain.name/?request=%7B>"version":"1.0","code":"0101","param":{"contenua":"de
> l'huile","contenub":"du sucre"}}
> mais à la déseralization
>
> si je precise la request en string str(request)

là l'erreur est plus clair ?

No JSON object could be decoded

http://192.168.12.60/UserMap/?request=[{"version":"1.0","code":"00","param":"{"login":"anonymous","pwd":""}}]

pour l'url de test

tonton
>

Hors ligne

#3 26-01-2011 10:28:13

Jean-mathieu Grimaldi
Membre
Inscription : 12-10-2010
Messages : 17

Re : dans la serie json

Le 26 janvier 2011 10:16, Tonton <to.tonton _AT_ gmail.com> a écrit :

>
>
> 2011/1/24 Tonton <to.tonton _AT_ gmail.com>
>
>> Bonjour
>> en reponse(ou requete)  je reçois du json aussi du type
>> http://mydomain.name/?request={ <http://mydomain.name/?request=%7B>"version":"1.0","code":"0101","param":{"contenua":"de
>> l'huile","contenub":"du sucre"}}
>> mais à la déseralization
>>
>> si je precise la request en string str(request)
>
> là l'erreur est plus clair ?
>

Envoyez plutôt le json dans un POST, pas dans une querystring ;-)

jean-mat


> No JSON object could be decoded
>
>  http://192.168.12.60/UserMap/?request=[{<http://192.168.12.60/UserMap/?request=[%7B>"version":"1.0","code":"00","param":"{"login":"anonymous","pwd":""}}]
>
> pour l'url de test
>
> tonton
>>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#4 26-01-2011 14:11:10

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : dans la serie json

2011/1/26 Jean-mathieu Grimaldi <jeanmat.grimaldi _AT_ gmail.com>

> Envoyez plutôt le json dans un POST, pas dans une querystring ;-)
>
jean-mat
>
>
> alors la methode recupere en string l'objet json de la request wsgi avec la
clef request là j'ai avancé

cartix(requ):
    obj_request_json =requ.REQUEST['request']
    objectrequest ={}
    for obj in serializers.deserialize("json",requ.REQUEST['request']):
        objectrequest['version'] = obj.version
        objectrequest['code'] = obj.code

Mais je retombe sur une autre erreur

*string indices must be integers*

meme je simplifie la demande
http://192.168.12.60/UserMap/?request={"version":"1.0","code":"00"}

Hors ligne

#5 26-01-2011 14:38:43

afranck64
Membre
Inscription : 30-12-2010
Messages : 20

Re : dans la serie json

La Python te dit:

Les indices de chaines doivent être des entiers.

Il doit avoir avec le message d'erreur, la ligne d'erreur.  Probablement ton "requ.REQUEST" n'est pas un dictionnaire mais une chaine de caractères.

Hors ligne

#6 26-01-2011 15:07:18

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : dans la serie json

vi c'est clairement cette ligne qui pose souci

for obj in serializers.deserialize("json",requ.REQUEST['request']):

requ.REQUEST['request'] renvoi cette string : {"version":"1.0","code":"00"}
que je souhaite deserializé  dans un dictionnaire

mais non là ça mauvaise synthaxe

tonton

2011/1/26 Franck Awounang Nekdem <afranck64 _AT_ yahoo.fr>

> La Python te dit:[quote]Les indices de chaines doivent être des
> entiers.[/quote]Il doit avoir avec le message d'erreur, la ligne d'erreur.
> Probablement ton "requ.REQUEST" n'est pas un dictionnaire mais une chaine
> de caractères.
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#7 26-01-2011 15:26:38

Romain
Membre
Inscription : 11-08-2010
Messages : 27

Re : dans la serie json

Le 26 janv. 2011 à 15:07, Tonton a écrit :

> vi c'est clairement cette ligne qui pose souci
>
> for obj in serializers.deserialize("json",requ.REQUEST['request']):
>
> requ.REQUEST['request'] renvoi cette string : {"version":"1.0","code":"00"}
> que je souhaite deserializé  dans un dictionnaire
>
> mais non là ça mauvaise synthaxe

pour ce genre d'opération, utilise le module json de python plutôt que les utilitaires de (dé)sérialisation de Django [1]:

import json
for obj in json.loads(requ.REQUEST['request']):
    ...


[1] http://docs.djangoproject.com/en/1.2/topics/serialization/#deserializing-data

Hors ligne

#8 26-01-2011 17:21:43

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : dans la serie json

d'abord merci pour vos reponses

alors dans un cas simple c'est bien un dictionnaire avec cléf valeur
{"version":"1.0","code":"00"}
mais dés complexification dirai-je le container est un liste bien moins
pratique
{ <http://mydomain.name/?request=%7B>"version":"1.0","code":"0101","param":{"contenua":"de
l'huile","contenub":"du sucre"}}

a moins que je ne creer derriere un dico en affectant key a l'indice et
value a l'indice+1 ...

tonton
2011/1/26 Romain Gaches <romain _AT_ ssji.net>

>
> Le 26 janv. 2011 à 15:07, Tonton a écrit :
>
> > vi c'est clairement cette ligne qui pose souci
> >
> > for obj in serializers.deserialize("json",requ.REQUEST['request']):
> >
> > requ.REQUEST['request'] renvoi cette string :
> {"version":"1.0","code":"00"}
> > que je souhaite deserializé  dans un dictionnaire
> >
> > mais non là ça mauvaise synthaxe
>
> pour ce genre d'opération, utilise le module json de python plutôt que les
> utilitaires de (dé)sérialisation de Django [1]:
>
> import json
> for obj in json.loads(requ.REQUEST['request']):
>        ...
>
>
> [1]
> http://docs.djangoproject.com/en/1.2/topics/serialization/#deserializing-data
> --
> Romain Gaches
> romain _AT_ ssji.net
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

Pied de page des forums