2017-11-27 6 views
1

ValueError:invalid literal for int() with base 10: ''エラーが発生しました。私は0は、このJSONをreturned.Inされると思うので、このエラーが発生した理由を理解することはできません本当にValueError:基数10のint()のリテラルが無効です。空の値が送信されたときにこのエラーが発生しました

{ "ans": "" } 

エラーhappens.IのようなJSONを送信すると、私は

def convert_json(request): 
    json_body = json.loads(request.body) 
    return json_body.get('ans', 0) 

を書いた、「」そう、なしを意味しません0が返されるはずですが、私のコードはうまくいきませんでした。これを修正するにはどうすればいいですか?理想的なシステムを作るにはどうすればいいですか?

+2

トレースバックを投稿できますか?エラーがどこかで発生しているという印象を受けました –

+0

空の文字列を 'int'に変換しようとしていますが、それは無効です。 –

+0

'request.body'の値が何であるか確認してください。あなたが提供したjsonの例を使用して、エラーは私のためにスローされません。 @WillemVanOnsemに同意すると、このエラーは投稿されたコードでは起こらないように感じる。 – Bilkokuya

答えて

0

Pythonでget()は、値が空の文字列であっても、辞書に存在する場合はその値を返します。

あなたのシェルで、次のコードを実行することでこれをテストすることができます:あなたは0に空の文字列を変換したい場合は

>>> json_body = {"ans": ""} 
>>> json_body.get('ans', 0) 
'' 

、あなたはあなたのconvert_json方法でこれを行う必要があります。 ansタイプは数がValeError調達できなかった場合は、上のコードでは

def convert_json(request): 
    json_body = json.loads(request.body) 
    return json_body.get('ans') and int(json_body.get('ans')) or 0 

def convert_json(request): 
    json_body = json.loads(request.body) 
    ans = json_body.get('ans', 0) 
    if ans == '': 
     ans = 0 
    return ans 
0

あなたはにコードをチャゲすることができます。

関連する問題