2017-11-27 1 views
1

ValueError : invalid literal for int() with base 10: '' 오류가 발생했습니다. 내가 0이 JSON을 returned.In 생각하기 때문에이 오류가 발생하는 이유를 이해할 수없는 정말ValueError : 밑이 10 인 int()에 대한 리터럴이 잘못되었습니다. ''빈 값이 전송되면이 오류가 발생합니다.

{ "ans": "" } 

오류이 생겼다처럼 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

파이썬에서 값이 빈 문자열 인 경우에도 get()은 사전에 값이 있으면 반환합니다.

당신은 당신의 쉘에서 다음 코드를 실행하여 테스트 할 수 있습니다 :

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

당신이 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

당신은 코드를 CHAGE 수 있습니다.

관련 문제