Requests: json()์ด JSONDecodeError๋กœ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์ถฉ๋Œ์‹œํ‚ต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 09์›” 13์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: psf/requests

๋‚˜๋Š” ์ด๊ฒƒ์„ Python 3.6.1 ๋ฐ 3.6.2์™€ ํ•จ๊ป˜ v. 2.18.4 ๋ฐ 2.14.2 ์š”์ฒญ์œผ๋กœ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ Python/์š”์ฒญ(python.org์—์„œ ๋‹ค์šด๋กœ๋“œํ•œ Python 3.6.1์ด ์„ค์น˜๋œ macOS Sierra), conda 4.3.25์˜ ์ผ๋ถ€๋กœ ์„ค์น˜๋œ Python/์š”์ฒญ, conda-forge์—์„œ ์„ค์น˜๋œ ์ตœ์‹  Python ๋ฐ ์š”์ฒญ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ณณ์—์„œ ๋™์ผํ•œ ๊ฒฐ๊ณผ.

์˜ˆ์ƒ ๊ฒฐ๊ณผ

http://docs.python-requests.org/en/master/์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ JSON ๊ฐ’ ์‚ฌ์ „์„ ๋ณผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ

Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

๋ฒˆ์‹ ๋‹จ๊ณ„

Python 3.6.2 | packaged by conda-forge | (default, Jul 23 2017, 23:01:38) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> r = requests.get('https://pypi.python.org/pypi')
>>> r.status_code
200
>>> r.encoding
'utf-8'
>>> r.json()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/site-packages/requests/models.py", line 892, in json
    return complexjson.loads(self.text, **kwargs)
  File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

์‹œ์Šคํ…œ ์ •๋ณด

$ python -m requests.help
{
  "chardet": {
    "version": "3.0.4"
  },
  "cryptography": {
    "version": "2.0.3"
  },
  "idna": {
    "version": ""
  },
  "implementation": {
    "name": "CPython",
    "version": "3.6.2"
  },
  "platform": {
    "release": "16.7.0",
    "system": "Darwin"
  },
  "pyOpenSSL": {
    "openssl_version": "100020cf",
    "version": "17.2.0"
  },
  "requests": {
    "version": "2.18.4"
  },
  "system_ssl": {
    "version": "100020cf"
  },
  "urllib3": {
    "version": "1.22"
  },
  "using_pyopenssl": true
}

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@justlurking , ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. .json() ๋ฉ”์„œ๋“œ๋Š” json ํ˜•์‹์˜ ์‘๋‹ต ์ฝ˜ํ…์ธ ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญํ•˜์‹  ์›นํŽ˜์ด์ง€๊ฐ€ HTML ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Accept ํ—ค๋”๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์œ ํšจํ•œ json ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ์‹œ๋„ ํ•˜๊ฑฐ๋‚˜ json ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

@justlurking , ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. .json() ๋ฉ”์„œ๋“œ๋Š” json ํ˜•์‹์˜ ์‘๋‹ต ์ฝ˜ํ…์ธ ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญํ•˜์‹  ์›นํŽ˜์ด์ง€๊ฐ€ HTML ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Accept ํ—ค๋”๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์œ ํšจํ•œ json ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ์‹œ๋„ ํ•˜๊ฑฐ๋‚˜ json ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ๋น ๋ฅด๊ณ  ์œ ์ตํ•œ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•œ ์ ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•œ ์—ฌ๋Ÿฌ ๋ฒ„์ „๊ณผ GitHub์— ๋Œ€ํ•œ ํ•ญ์˜์˜ ๋ถ€์กฑ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ด์™€ ๋น„์Šทํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿคฆ

๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ json.JSONDecodeError๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ด์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

try:
    r.json()
except JSONDecodeError as e:
    <handle exception>

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ValueError์˜ ํ•˜์œ„ ํด๋ž˜์Šค์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์žก์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ํŠน์ • ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ทธ ์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด๋Š” ๋‚ด๊ฐ€ ์ œ์•ˆํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

NoahCardoza picture NoahCardoza  ยท  4์ฝ”๋ฉ˜ํŠธ

Matt3o12 picture Matt3o12  ยท  3์ฝ”๋ฉ˜ํŠธ

xsren picture xsren  ยท  3์ฝ”๋ฉ˜ํŠธ

JimHokanson picture JimHokanson  ยท  3์ฝ”๋ฉ˜ํŠธ

ghtyrant picture ghtyrant  ยท  3์ฝ”๋ฉ˜ํŠธ