/ / क्या एक अच्छा विकल्प विकसित करने के लिए जसन को तानाशाही में परिवर्तित करना है? - अजगर, json, शब्दकोश, eval

क्या जेसन को एक अच्छी पसंद के साथ eval करने के लिए परिवर्तित कर रहा है? - पायथन, जेसन, शब्दकोश, eval

मुझे एक दूरस्थ सर्वर से एक json ऑब्जेक्ट मिल रहा है, और इसे इस तरह से अजगर स्ट्रिंग में परिवर्तित करना है:

a = eval(response)

क्या यह किसी भी तरह से बेवकूफ है, या मेरे पास एक बेहतर विकल्प है?

उत्तर:

उत्तर № 1 के लिए 13

का उपयोग करते हुए eval JSON को संसाधित करने का एक अच्छा तरीका नहीं है:

  1. JSON इस वजह से भी मान्य अजगर नहीं है true, false, तथा null.

  2. eval पाइथॉन कोड को निष्पादित करेगा, जिससे आप कोड के दुर्भावनापूर्ण इंजेक्शन की दया पर हैं

उपयोग json इसके बजाय मानक पुस्तकालय में उपलब्ध मॉड्यूल:

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

यदि आप "2.6 से अधिक पुराने पायथन के संस्करण का उपयोग कर रहे हैं, तो आपको मॉड्यूल को स्वयं डाउनलोड करना होगा।" इसे कहते हैं simplejson और हो सकता है PyPi से डाउनलोड किया गया.


जवाब के लिए 2 № 2

हाँ बहुत। इसके बजाय एक json डिकोडर का उपयोग करें:

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