2009-05-28 18 views
32

मेरे पास मेरे डीबी में एक स्ट्रिंग है, मैं अपने पेज में खींचना चाहता हूं और जावास्क्रिप्ट ऑब्जेक्ट में कनवर्ट करना चाहता हूं।मैं jQuery में एक JSON स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में कैसे परिवर्तित करूं?

[ 
{id: 1,title: "Long Event", 
     start: new Date(2009, 5, 6, 14, 0),end: new Date(2009, 5, 11)}, 
{id: 2,title: "Repeating Event", 
     start: new Date(2009, 5, 2)}, 
{id: 3,title: "Meeting", 
     start: new Date(2009, 5, 20, 9, 0)}, 
{id: 4,title: "Click for Facebook", 
     start: new Date(2009, 5, 27, 16),end: new Date(2009, 5, 29), 
     url: "http://facebook.com/"} 
] 

मैं jQuery का उपयोग करके यह कैसे कर सकता हूं?

+0

संभावित डुप्लिकेट [jQuery में JSON को क्रमबद्ध करना] (http://stackoverflow.com/questions/191881/serializing-to-json-in-jquery) – outis

उत्तर

2

eval() के बारे में कैसे?

var obj = eval (jsonString);

+0

आमतौर पर eval का उपयोग करने के लिए यह बहुत अच्छा विचार नहीं है, जब तक कि वहां न हो हाथ में उद्देश्य प्राप्त करने के लिए बिल्कुल कोई और तरीका नहीं है। – montrealist

+0

आपके पास एक बिंदु है, लेकिन जोखिम कम है। अधिकांश समय, आप अपने सर्वर कोड द्वारा जेएसओएन का मूल्यांकन कर रहे हैं, जो कभी भी सुरक्षा जोखिम नहीं है? यहां तक ​​कि jQuery भी AJAX JSON को ऑब्जेक्ट में कनवर्ट करने के लिए eval() को कॉल करता है। –

+0

सरल समाधान सबसे अच्छा समाधान है। यदि आप JSON के स्रोत को जानते हैं तो आप पार्सिंग कर रहे हैं, मुझे लगता है कि eval सबसे अच्छा विकल्प होगा। – Thinker

1

JQuery-json प्लगइन

var thing = {plugin: 'jquery-json', version: 1.3}; 

var encoded = $.toJSON(thing);    //'{"plugin": "jquery-json", "version": 1.3}' 
var name = $.evalJSON(encoded).plugin;  //"jquery-json" 
var version = $.evalJSON(encoded).version; // 1.3 
1

आप jquery-json प्लगइन को देखने गए थे पर एक नज़र डालें?

0

उपयोग

jQuery.getJSON(url, data, callback)

या प्रकार पैरामीटर के रूप में "json" पारित: मामले में

jQuery.post(url, data, callback, type)

* सभी आप एक से "स्ट्रिंग" फ़ेच कर रहे हैं:

jQuery.get(url, data, callback, type)

एक ही लागू होता है AJAX अनुरोध

7

"आधिकारिक" json2.js स्क्रिप्ट में 2 विधियां शामिल हैं: एक जो सुरक्षित रूप से पार्स करेगा किसी ऑब्जेक्ट (JSON.parse) के लिए कोई JSON स्ट्रिंग, और वह एक ऑब्जेक्ट को JSON स्ट्रिंग (JSON.stringify) में परिवर्तित करेगा

स्क्रिप्ट here पाया जा सकता है।

ऊपर मेरी पोस्ट में, मैं eval() का सुझाव दिया है, लेकिन वहाँ वास्तव में JSON मूल्यांकन करने के लिए (आप json2.js स्क्रिप्ट का उपयोग नहीं करना चाहते हैं) एक थोड़ा बेहतर तरीका है: का उपयोग कर

var obj = (new Function("return " + json))(); 

json2.js स्क्रिप्ट:

var obj = JSON.parse(json); 
+0

अधिकांश ब्राउज़रों में इन दिनों मूल जेएसओएन ऑब्जेक्ट शामिल है, इसलिए json2.js को और भी शामिल करने की आवश्यकता नहीं है। बस 'JSON.parse (स्ट्रिंग)' या 'JSON.stringify (ऑब्जेक्ट) ' – AlexChaffee

+0

का उपयोग करें अधिकांश –

-1

जबकि आप eval कमांड का उपयोग कर सकते हैं, तो आपको इसे पहले सुरक्षा के लिए जांचना होगा। मैं उपयोग करता हूं:

var data = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/. 
      test(source.replace(/"(\\.|[^"\\])*"/g, '')))  
      && eval('(' + source + ')'); 

यह काम करना चाहिए (इसे मूल से थोड़ा समायोजित किया गया है)। मुख्य बिंदु यह है कि जेएसओएन स्ट्रिंग को फ़ंक्शन और अन्य वास्तविक निष्पादन योग्य कोड को घुमाने से रोकने के लिए चेक किया गया है। (पहला रेगेक्स महत्वपूर्ण बिट है)।

उसने कहा, जेएसओएन प्लगइन बहुत अच्छा है।

64

jQuery के रूप में 1.4.1 आप इस देशी रूप

jQuery.parseJSON 

देखें jQuery documentation कर सकते हैं।

+2

ओपी के प्रश्न का पूरी तरह उत्तर नहीं देते हैं। – mkoistinen

+0

यह सबसे अच्छा तरीका है, अगर आप पहले ही jQuery का उपयोग कर रहे हैं। –

संबंधित मुद्दे

 संबंधित मुद्दे