एक स्ट्रिंग को JSON ऑब्जेक्ट में परिवर्तित करना


148

जेएस आपको कैसे लगता है कि एक स्ट्रिंग JSON है?

मेरे पास एक फ़ंक्शन है जो केवल तभी काम करता है जब JSON ऑब्जेक्ट इसे पास करता है। अगर मैं JSON के समान प्रारूप के साथ इसे एक स्ट्रिंग पास करता हूं, तो यह काम नहीं करता है। इसलिए मैं उस फ़ंक्शन को यह सोचना चाहता हूं कि जो स्ट्रिंग पास की गई है वह JSON है। स्ट्रिंग वास्तव में JSON प्रारूप में है।

मैंने भी निम्नलिखित प्रयास किया। मैंने अजाक्स के माध्यम से स्ट्रिंग को इनपुट किया, "जेन्सन" के रूप में "पैरामीटर" के रूप में हैंडल के साथ, और फिर जब मैंने फ़ंक्शन को काम करने के लिए परिणाम पारित किया।

तो मैंने कहा कि समस्या स्ट्रिंग के साथ नहीं है। मैं इस स्ट्रिंग को JSON में कैसे परिवर्तित करूं? अगर मुझे ajax रिक्वेस्ट के माध्यम से समान स्ट्रिंग मिलती है और फिर इसे फंक्शन फंक्शन में पास करना है, जबकि सीधे पास करने से यह काम नहीं करता है।

स्ट्रिंग इस प्रकार है:

  {
     "data": [
   {
  "id": "id1",
      "fields": [
        {
          "id": "name1",
          "label": "joker",
          "unit": "year"
        },
         {"id": "name2", "label": "Quantity"},
    ],
      "rows": [    data here....

and closing braces..


2
आपका शीर्षक भ्रामक है। आपके प्रश्न की सामग्री के आधार पर मैं कहूंगा कि आप JSON युक्त स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट / सरणी में बदलना चाहते हैं।
फेलिक्स क्लिंग

ठीक है मैंने इसे हल कर दिया। स्ट्रिंग में एक \ n था। अब केवल यह पता लगाना है कि इसके साथ JSON.parse का उपयोग कैसे करें।
Zer0

ठीक है मैंने इसे ठीक किया गोटो jsonlint.com और अपनी स्ट्रिंग वहाँ रखें। यदि यह अपना सही कहता है, तो आप इसे प्राप्त करने के लिए JSONParse का उपयोग कर सकते हैं।
Zer0

यदि कोई इसे पढ़ता है, तो शीर्षक "एक JSON स्ट्रिंग को ऑब्जेक्ट में परिवर्तित करना" माना जाता है
क्रिस G

जवाबों:


353
var obj = JSON.parse(string);

stringतुम्हारा जसन स्ट्रिंग कहाँ है


ये काम नहीं कर रहा है। यह एक त्रुटि "सिंटैक्सएयर: JSON.parse: अनपेक्षित चरित्र" फेंक रहा है। स्ट्रिंग के साथ कुछ भी गलत नहीं है जब मैं ajax अनुरोध के माध्यम से एक ही स्ट्रिंग प्राप्त करता हूं और इसे "JSON" के रूप में संभालता हूं, तो कोई समस्या नहीं होती है।
Zer0

कृपया अपना एक्यूट JSON स्ट्रिंग
क्षितिज

{"डेटा": [{आईडी ": - आप यहां एक दोहरे उद्धरण को याद कर रहे हैं, अर्थात आईडी का दोहरा उद्धरण शुरू कर रहे हैं
क्षितिज

2
जब मैं इसे अजाक्स के माध्यम से प्राप्त करता हूं तो यह काम करता है तब यह JSON के रूप में प्रतिक्रिया को संभालता है। इसलिए मुझे लगता है कि मुझे इसे JSON ऑब्जेक्ट में बदलना होगा ..
Zer0

2
मैं jsonlint.com पर जा रहा हूं, और यह सुनिश्चित कर रहा हूं कि मेरा Json सही है
Zer0

26

आप इसके लिए उपयोग कर सकते हैं JSON.parse()

MDN पर डॉक्स देखें

उदाहरण:

var myObj = JSON.parse('{"p": 5}');
console.log(myObj);

1
ये काम नहीं कर रहा है। यह एक त्रुटि "सिंटैक्सएयर: JSON.parse: अनपेक्षित चरित्र" फेंक रहा है। स्ट्रिंग के साथ कुछ भी गलत नहीं है जब मैं ajax अनुरोध के माध्यम से एक ही स्ट्रिंग प्राप्त करता हूं और इसे "JSON" के रूप में संभालता हूं, तो कोई समस्या नहीं होती है।
Zer0

2
@ Zer0: आपको अपने सवाल को अपडेट करना चाहिए कि आप इसे कैसे अपने स्ट्रिंग स्ट्रिंग के साथ आज़मा रहे हैं।
सरफराज

4
@ Zer0: हम केवल अपने ज्ञान का सबसे अच्छा जवाब दे सकते हैं। आप कहते हैं कि आपके पास JSON स्ट्रिंग है, हम उसी के अनुसार उत्तर देते हैं। ऐसा लगता है कि आपका स्ट्रिंग अलग है, यदि आप इसे पोस्ट करेंगे, तो हम इसे ध्यान में रखते हुए उत्तर दे सकते हैं। यदि आप कोडिंग के बारे में कोई प्रश्न पूछते हैं, तो कोड / डेटा अपरिहार्य है।
फेलिक्स क्लिंग

7

मुझे आपकी जैसी ही स्ट्रिंग के साथ एक ही समस्या थी

{id:1,field1:"someField"},{id:2,field1:"someOtherField"}

यहां समस्या स्ट्रिंग की संरचना है। Json parser पहचान नहीं रहा था कि इस मामले में 2 ऑब्जेक्ट बनाने की आवश्यकता है। इसलिए मैंने जो किया, वह मूर्खतापूर्ण है, मैंने अपनी स्ट्रिंग को फिर से संरचित किया और []इसे पार्सर के साथ जोड़ा

var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"}
myString = '[' + myString +']'
var json = $.parseJSON(myString)

आशा करता हूँ की ये काम करेगा,

यदि किसी के पास अधिक सुरुचिपूर्ण दृष्टिकोण है तो कृपया साझा करें।


ऊपर आपके कोड में, आपने myStringगलत तरीके से निर्माण किया है। यह एक स्ट्रिंग नहीं है, और यह गलत तरीके से JSON स्वरूपित है। आपकी दूसरी पंक्ति फिर बेमानी हो जाएगी। यह है कि यह क्या होना चाहिए: var myString = '[{"id":1,"field1":"someField"},{"id":2,"field1":"someOtherField"}]' मुझे पता है कि यह काफी पुरानी पोस्ट है, लेकिन मैंने सोचा कि अगर कोई इसे पाता है तो मैं कुछ स्पष्टता जोड़ूंगा।
जेम्स एबरहार्ट

मैंने अपना मुद्दा हल किया $.parseJSONजहां JSON.parseयह काम नहीं कर रहा था और एक त्रुटि फेंक रहा थाJSON.parse is not a function
ब्रासोफिलो


3

ऑब्जेक्ट मैपर का उपयोग करके स्ट्रिंग को हैशपैप में बदलें ...

new ObjectMapper().readValue(string, Map.class);

आंतरिक रूप से मैप JSON ऑब्जेक्ट के रूप में व्यवहार करेगा


2
var Data=[{"id": "name2", "label": "Quantity"}]

JSON पार्स में स्ट्रिंग चर पास करें:

Objdata= Json.parse(Data);

आपके उदाहरण में, Dataपहले से ही एक वस्तु है, इसलिए इसे पार्स करने की कोई आवश्यकता नहीं होगी। इसे स्ट्रिंग करने के लिए आपको अपने सभी डेटा के आसपास कुछ उद्धरणों की आवश्यकता होगी।
जेम्स एबरहार्ट

2

बस evalफ़ंक्शन का उपयोग करें।

var myJson = eval(theJsibStr);

eval बुराई है, इस दृष्टिकोण के साथ सुरक्षा के लिए बहुत सावधान रहें
dparer


0

आइए हम आपको स्ट्रिंग की तरह मानते हैं

उदाहरण: "नाम: आकर्षक, उम्र: 21, लिंग: महिला"

function getJsonData(query){
    let arrayOfKeyValues = query.split(',');
    let modifiedArray =  new Array();
    console.log(arrayOfKeyValues);
    for(let i=0;i< arrayOfKeyValues.length;i++){
        let arrayValues = arrayOfKeyValues[i].split(':');
        let arrayString ='"'+arrayValues[0]+'"'+':'+'"'+arrayValues[1]+'"';
        modifiedArray.push(arrayString);
    }
    let jsonDataString = '{'+modifiedArray.toString()+'}';
    let jsonData = JSON.parse(jsonDataString);
    console.log(jsonData);
    console.log(typeof jsonData);
    return jsonData;
}

let query = "name:lucy,age:21,gender:female";
let response = getJsonData(query);
console.log(response);

`

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.