मेरे पास निम्न JSON डेटा संरचना है। मैं जानना चाहता हूं कि मैं चाबियाँ प्रदान करने वाले डेटा को कैसे निकाल सकता हूं।

"Meta Data": {
    "1. Information": "High School",
    "2. Name": "St Marys"
},
"Teachers' Names": {
    "Grade I": {
        "1. English": "Amanda Fernandez",
        "2. Sociology": "Christina Andrew",
        "3. Applied Science": "George Binu"
    },
    "Grade II": {
        "1. English": "Gedfd Hkdfd",
        "2. Sociology": "lksdg klsdfd",
        "3. Applied Science": "some one else"
    }
  }
}

मैं नोडज का उपयोग करता हूं और अनुरोध मॉड्यूल के तहत इस डेटा को 'बॉडी' ऑब्जेक्ट में प्राप्त करता हूं। मैं ऊपर ग्रेड I, अंग्रेजी शिक्षक का नाम कैसे निकालूं? मैंने यह देखने के लिए शरीर ["शिक्षकों के नाम] [0] की कोशिश की कि क्या यह मुझे कम से कम ग्रेड I पर पूर्ण आपत्ति देगा। लेकिन ऐसा नहीं हुआ। क्या कोई मेरी मदद कर सकता है?

0
SamT 16 पद 2017, 03:13

3 जवाब

सबसे बढ़िया उत्तर

एक ही लक्ष्य को प्राप्त करने के कई तरीके हैं (हमेशा की तरह)। लेकिन यहां आपके प्रश्न का उत्तर देने के लिए हम आपके लक्ष्य को प्राप्त करने का एक तरीका अपनाते हैं।

const body = {
  "Meta Data": {
    "1. Information": "High School",
    "2. Name": "St Marys"
  },
  "Teachers' Names": {
    "Grade I": {
      "1. English": "Amanda Fernandez",
      "2. Sociology": "Christina Andrew",
      "3. Applied Science": "George Binu"
    },
    "Grade II": {
      "1. English": "Gedfd Hkdfd",
      "2. Sociology": "lksdg klsdfd",
      "3. Applied Science": "some one else"
    }
  }
}

// to access known keys you could do it like this
console.log(data['Teachers\' Names']['Grade I']['1. English']) // this will output "Amanda Fernandez"
0
Siggy 16 पद 2017, 03:24
var grade1 = body["Teachers' Names"]["Grade I"];

चूंकि आप किसी ऑब्जेक्ट तक पहुंच रहे हैं, सरणी नहीं, आपको पूर्णांक अनुक्रमणिका के बजाय गुण नामों का उपयोग करना चाहिए।

आपकी टिप्पणी के जवाब में, यदि आप "ग्रेड I" स्ट्रिंग के बजाय केवल int 0 निर्दिष्ट करके प्रथम श्रेणी प्राप्त करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

var teachersNames = body["Teachers' Names"];
var first = teachersNames[Object.keys(teachersNames)[0]];

यहां आप संपत्ति के नामों को प्राप्त करने और सरणी के लिए फ़ंक्शन Object.keys का उपयोग कर रहे हैं और फिर उस सरणी में शून्य आइटम प्राप्त कर रहे हैं और फिर उस आइटम को ऑब्जेक्ट टीचरनाम में कुंजी के रूप में उपयोग कर रहे हैं।

यदि आप "1। अंग्रेजी" मान चाहते हैं तो आप यह कर सकते हैं:

var result = first["1. English"];

यह बहुत भीषण और संकेत है कि आपको अपनी आवश्यकताओं को बेहतर ढंग से पूरा करने के लिए अपने Json को अलग तरह से संरचित करने पर विचार करना चाहिए। जैसे वस्तुओं के बजाय सरणियों का उपयोग करना।

1
bhspencer 16 पद 2017, 18:41

यदि आप कुंजी में ' हैं, तो आप "s का उपयोग करके, ऊपर उल्लिखित @bhspencer के रूप में कुंजियों का उल्लेख कर सकते हैं, और इसके विपरीत। आप स्ट्रिंग में \ के साथ उद्धरण से भी बच सकते हैं, या यदि वे उपलब्ध हों तो es6 टेम्पलेट शाब्दिक का उपयोग करें।

var str = `"something" 'here'`;
var body = {};
body[str] = 1;

var grade1 = body['"something" \'here\'']; // works
var grade1 = body[`"something" 'here'`]; // if you have es6 template literals

कुछ लोग इन अन्य मार्गों को पसंद करते हैं यदि चीजें बहुत जटिल हो जाती हैं और वे स्थिरता चाहते हैं, या स्टाइल गाइड टेस्ट पास करना चाहते हैं।

0
max 16 पद 2017, 03:26