yasar
yasar

Reputation: 13738

Does converting json to dict with eval a good choice?

I am getting a json object from a remote server, and converting it to a python string like this:

a = eval(response)

Is this stupid in any way, or do I have a better option?

Upvotes: 10

Views: 7753

Answers (2)

Ned Batchelder
Ned Batchelder

Reputation: 375494

Using eval is not a good way to process JSON:

  1. JSON isn't even valid Python, because of true, false, and null.

  2. eval will execute arbitrary Python code, so you are at the mercy of malicious injection of code.

Use the json module available in the standard library instead:

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

If you're using a version of Python older than 2.6, you'll need to download the module yourself. It's called simplejson and can be downloaded from PyPi.

Upvotes: 19

MattH
MattH

Reputation: 38247

Yes, very. Use a json decoder instead:

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

Upvotes: 2

Related Questions