दिलचस्प पोस्ट
मैं जावा में दो स्ट्रिंग कैसे जोड़ूं? पायथन में एक सूची में विशिष्ट स्थानों में मान डालना उल्का डॉक्स में संदेश-गिनती का उदाहरण कैसे काम करता है? एक ही बात करने के लिए यूआरएल पर लूपिंग मैक ओएस एक्स में पृष्ठभूमि को कैसे प्रोग्राममैटिक रूप से बदल सकता हूं? REST में बनाम पोस्ट करें आउटलुक – दूसरे उपयोगकर्ता का कैलेंडर पढ़ें एसक्यूएल: एक मेज में याद आ रही आईडी खोजें लॉग आउट करने और वापस आने के बिना मैं कैसे पुनः लोड कर सकता हूं? प्रतिगमन गुणांक मूल्यों निकालें Django सिग्नल बनाम ओवरराइड सहेजे विधि Java पैकेज नामों में शब्द विभाजक के लिए सम्मेलन क्या है? मैं टेक्स्ट बॉक्स में कैरेट के (एक्स, वाई) पिक्सेल निर्देशांक कैसे प्राप्त करूं? विंडोज पर एफसीएनटीएल विकल्प जावास्क्रिप्ट स्ट्रिंग न्यूलाइन वर्ण?

JSON.पार्स बनाम eval ()

मेरा स्पाइडर संवेदना मुझे चेतावनी देती है कि आने वाले जेएसओएन को पार्स करने के लिए eval() का उपयोग करना एक बुरा विचार है मैं बस सोच रहा हूं कि अगर JSON.parse() – जो मुझे लगता है कि जावास्क्रिप्ट का हिस्सा है और ब्राउज़र-विशिष्ट फ़ंक्शन नहीं है – अधिक सुरक्षित है

वेब के समाधान से एकत्रित समाधान "JSON.पार्स बनाम eval ()"

यदि आप eval का उपयोग करते हैं, तो आप हमलों के प्रति अधिक संवेदनशील हैं : जेएसओएन जावास्क्रिप्ट का सबसेट है और जेसन। पीआरएस सिर्फ JSON पार्स करता है जबकि ईवाल सभी जेएस अभिव्यक्तियों के लिए दरवाजा खोलता है।

सभी JSON.parse कार्यान्वयन सबसे अधिक उपयोग eval()

JSON.parse डगलस JSON.parse के समाधान पर आधारित है, जो कि eval() का उपयोग करता है, ठीक JSON.parse 497 पर ।

 // In the third stage we use the eval function to compile the text into a // JavaScript structure. The '{' operator is subject to a syntactic ambiguity // in JavaScript: it can begin a block or an object literal. We wrap the text // in parens to eliminate the ambiguity. j = eval('(' + text + ')'); 

JSON.parse का लाभ यह है कि यह पुष्टि करता है कि तर्क सही JSON वाक्यविन्यास है।

सभी ब्राउज़र्स के पास मूल JSON समर्थन नहीं है, इसलिए ऐसे समय होंगे जहां आपको eval() को JSON स्ट्रिंग में उपयोग करना होगा। http://json.org से JSON पार्स्टर का उपयोग करें, क्योंकि यह आपके लिए बहुत आसान है।

Eval() एक बुराई है लेकिन कुछ ब्राउज़रों के खिलाफ इसकी एक आवश्यक बुराई है लेकिन आप इसे से बच सकते हैं, ऐसा करते हैं !!!!!

यदि आप eval साथ JSON को पार्स करते हैं, तो आप स्ट्रिंग को बिल्कुल कुछ भी शामिल करने की अनुमति दे रहे हैं, इसलिए केवल डेटा सेट होने के बजाय, आप फ़ंक्शन कॉल्स निष्पादित कर सकते हैं, या जो भी हो

इसके अलावा, जेएसएएन के parse एक अनुकूल पैरामीटर, रिवायवर को स्वीकार करता है, जो आपको विशिष्ट मानों से निपटने के तरीके को निर्दिष्ट करने देता है, जैसे डेटासेट (इनलाइन प्रलेखन में अधिक जानकारी और उदाहरण)

JSON.parse () और eval () क्या स्वीकार करेंगे के बीच अंतर है। इस पर eval की कोशिश करो:

var x = "{\" shoppingCartName \ ": \" शॉपिंगकार्ड: 2000 \ "}"

 eval(x) //won't work JSON.parse(x) //does work 

यह उदाहरण देखें।

JSON सिर्फ जावास्क्रिप्ट का एक सबसेट है लेकिन eval पूरी जावास्क्रिप्ट भाषा का मूल्यांकन करता है, न कि सिर्फ एसएससेट जो कि JSON है