Projet

Général

Profil

Bug #8406

charger le json en entrée en tant que str(), pas unicode()

Ajouté par Frédéric Péters il y a plus de 8 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
29 septembre 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Là on va se trouver à stocker de l'unicode (genre dans submission_context) et ça va faire mal.


Fichiers

Révisions associées

Révision 475abd5a (diff)
Ajouté par Frédéric Péters il y a plus de 8 ans

misc: load json input as strings, not unicode (#8406)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 8 ans

#2

Mis à jour par Thomas Noël il y a plus de 8 ans

Ouaip... Ack.

Quid de la lecture des réponses aux webservices ?

#3

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Le json_loads ne marche pas sur une simple chaîne je pense (cas limite il est vrai).

#4

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Dans le commit pour la validation des fichiers j'ai ça:

def json_encode_helper(d, charset):
    '''Encode a JSON structure into local charset'''
    if isinstance(d, unicode):
        return d.encode(charset)
    elif isinstance(d, list):
        return [json_encode_helper(e, charset) for e in d]
    elif isinstance(d, dict):
        new_d = {}
        for k, v in d.iteritems():
            new_d[json_encode_helper(k, charset)] = json_encode_helper(v, charset)
        return new_d
    else:
        return d

def json_encode(d, charset=None):
    return json_encode_helper(d, charset or get_publisher().site_charset)

#5

Mis à jour par Frédéric Péters il y a plus de 8 ans

Oui, objects_hook marche uniquement pour les "objets" json, i.e. des dictionnaires; dans les cas d'usage actuels, ça me semblait suffisant.

Mais là je viens d'étendre pour le retour du wscall et j'ai du coup utilisé ton json_encode_helper.

#6

Mis à jour par Thomas Noël il y a plus de 8 ans

mais pour le coup, il sert à quoi le JSONDecoder ?

#8

Mis à jour par Thomas Noël il y a plus de 8 ans

Et c'est propre et sans trop de magie ainsi, python 1.5, Ack.

#9

Mis à jour par Frédéric Péters il y a plus de 8 ans

  • Statut changé de En cours à Résolu (à déployer)
commit 475abd5a6c829a712d799cfe2e5a25cf701511aa
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Tue Sep 29 12:08:38 2015 +0200

    misc: load json input as strings, not unicode (#8406)
#10

Mis à jour par Thomas Noël il y a plus de 8 ans

  • Version cible mis à v1.14
#11

Mis à jour par Frédéric Péters il y a plus de 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF