2011-12-04 1 views
0
object = {'score-set': [('SomeString', 1.0)], 'n': 10, 'num-found': 1, 'start': 0} 
type(object) is dict. 

の内側に、コマンドラインで動作します(オブジェクトf)はfが書き込み可能なファイルを開いているJSON.dumpはないスクリプト

。私は完全にファイル内のダンプを取得します。

しかし、このような文脈でのプログラムの内部:

def JSONresponse(object,request,jsonIndent=None): 
    r=HttpResponse(mimetype="application/json") 
    callback1=request.GET["jsoncallback"] if "jsoncallback" in request.GET else None 
    callback2=request.GET["callback"] if "callback" in request.GET else None 
    callback = callback1 or callback2 
    if callback and len(callback) > 1: 
     r.write(callback + "(") 
     json.dump(object,r,indent=jsonIndent) 
     r.write(");") 
    else: 
     json.dump(object,r,indent=jsonIndent) 
     r.write("\n") 
    return r 

私はjson.dumpライン上で次の例外を取得します。

Exception Value: 1.0 is not JSON serializable 

任意のヒントをいただければ幸い、

どうもありがとう、

+1

ジャストスタイルのコメント://docs.python:あなたはおそらく、HTTP([ 'object']以来、あなたの変数名に' object'を使用する必要はありません。 org/library/functions.html#object)は組み込み関数です。 –

+0

チップのおかげで、それも変更されます。 – jason

答えて

2

私はあなたのfloatを推測していることは本当にfloatではありませんが、特定の方法でそれのような役割を果たします。それをシリアライズする前floatに変換してみてください。

object['score-set'] = [(a, float(b)) for (a, b) in object['score-set']] 
+0

私は今それを試してみましょう。 – jason

+0

お金の上に右!私は1.0のタイプを出力し、それは 'numpy.float32' であることが判明しました。あなたの助けをもう一度ありがとう! – jason

関連する問題