2011-02-10 14 views
0

私はこのコードを持っている:Djangoの初心者の質問

def encode_myway(obj): 
    if isinstance(obj, User): 
     data = dict() 
     data['username'] = obj.username 
     data['code'] = obj.code //a number = 30 
    return data 

私は私が持っている問題は、そのコード(整数)がNULLに等しいですが、私はserializers.serialize("json", [resp,])を使用している場合、私はたくさん持っsimplejson.dumps(resp, default=encode_myway)を使用してJSONのためにシリアライズしています私のjsonのガベージの整数は正しいです。私はこのような何かを参照してください:

"[{\"pk\":\29,\\"model\":\\"smapp.userprofile\",\\"fields\":\{\"city\":\\"barcelona\", ... }}]" 
+0

Simplejsonは、オブジェクトの型に基づいてオブジェクトをエンコードします(そうでなければならないと思われる型ではありません)。Noneはnullにマップされるため、「整数」は実際には整数であり、Noneではないことを再度確認します。 – Kekoa

+0

どうすればobj.codeを確認できますか? – david

答えて

0

あなたは二重エンコーディングされているようです。 respがどこに由来するかはわかりませんが、既にJSONのようです。

+0

respは 'resp = get_object_or_404(User、user = user.pk) 'から来ます。 – david

+0

私はjsonの文字列を二重にエンコードしていました。最初の' data = serializers.serialize( "json"、[resp 、]) '次に' simplejson.dumps(data) 'を出力してくれました。ありがとうございます。今はきれいなjson文字列を持っています。とにかく私は自分の状況の最初の部分についてはまだ興味があります。なぜ 'simplejson.dumps(resp、default = encode_myway)'を使うとobj.codeがnullになるのですか? – david