Является ли преобразование JSON, чтобы диктовать с Eval хороший выбор? - PullRequest
8 голосов
/ 02 сентября 2011

Я получаю объект json с удаленного сервера и преобразую его в строку Python, например:

a = eval(response)

Это глупо, или у меня есть лучший вариант?

Ответы [ 2 ]

15 голосов
/ 02 сентября 2011

Использование eval не очень хороший способ обработки JSON:

  1. JSON даже не является допустимым Python из-за true, false и null.

  2. eval выполнит произвольный код Python, поэтому вы находитесь во власти злонамеренного внедрения кода.

Вместо этого используйте модуль json, доступный в стандартной библиотеке:

import json
data = json.loads("[1, 2, 3]")

Если вы используете версию Python старше 2.6, вам необходимо загрузить модуль самостоятельно. Он называется simplejson и может быть загружен из PyPi .

2 голосов
/ 02 сентября 2011

Да, очень.Вместо этого используйте json-декодер:

>>> from simplejson import loads
>>> loads(response)
...