/ / Czy konwersja json do dyktowania z eval jest dobrym wyborem? - python, json, słownik, eval

Czy konwersja json do dyktowania z eval jest dobrym wyborem? - python, json, słownik, eval

Otrzymuję obiekt json ze zdalnego serwera i konwertuję go na ciąg pythonu w następujący sposób:

a = eval(response)

Czy jest to w jakiś sposób głupie, czy mam lepszą opcję?

Odpowiedzi:

13 dla odpowiedzi nr 1

Za pomocą eval nie jest dobrym sposobem na przetwarzanie JSON:

  1. JSON nie jest nawet poprawnym Pythonem, z powodu true, false, i null.

  2. eval wykona dowolny kod Pythona, więc jesteś na łasce złośliwego wtrysku kodu.

Użyj json moduł dostępny w standardowej bibliotece:

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

Jeśli używasz wersji Python starszej niż 2.6, musisz samodzielnie pobrać moduł. To jest nazwane simplejson i może być pobrane z PyPi.


2 dla odpowiedzi nr 2

Tak, bardzo. Zamiast tego użyj dekodera json:

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