"-" डैश के साथ JSON संपत्ति का उपयोग करने में असमर्थ


127

जब स्ट्रिंग में एक डैश कैरेक्टर होता है, तो मैं एक जोंस ऑब्जेक्ट से एक मान प्राप्त करने में असमर्थ होता हूं:

{
"profile-id":1234, "user_id":6789
}

अगर मैं jsonObj.profile-idइसे वापस लौटाने की कोशिश करता हूँ, ReferenceError: "id" is not definedलेकिन jsonObj.user_id 6789 वापस आ जाएगा

मेरे पास बाहरी एपीआई कॉल द्वारा लौटाए जा रहे मूल्यों को संशोधित करने का कोई तरीका नहीं है और डैशिंग को हटाने के लिए लौटे हुए तार को पार्स करने की कोशिश कर रहा है, जिससे उर्र आदि बर्बाद हो जाएंगे, जो कि पास भी हैं। मदद?


3
JSON को पार्स करने के लिए आप किस भाषा / पार्सर का उपयोग करने की कोशिश कर रहे हैं, इस पर जानकारी जोड़ने में मदद मिल सकती है।
माइक ब्रैंट

1
Utilities.jsonParseज्यादा कुछ नहीं कहता।
डारिन दिमित्रोव

जवाबों:


278

jsonObj.profile-idएक घटाव अभिव्यक्ति (यानी jsonObj.profile - id) है।

ऐसी कुंजी तक पहुंचने के लिए जिसमें ऐसे अक्षर होते हैं जो पहचानकर्ता में दिखाई नहीं दे सकते, कोष्ठक का उपयोग करें:

jsonObj["profile-id"]

2
धन्यवाद! जानकारी के लिए: यह कोणीय के साथ भी काम करता है: {{jsonObj.attributes ["profile-id"]}}
BastienSander

3
जब यह जावास्क्रिप्ट में काम करता है और इसके मूल कार्यान्वयन के लिए स्ट्रिंग द्वारा किसी ऑब्जेक्ट प्रॉपर्टी की कुंजी का उपयोग करता है, तो यकीन है कि यह शीर्ष पर सब कुछ में काम करता है
जॉन स्मिथ

1
जेएस "स्टाइल" ऑब्जेक्ट के लिए भी काम करता है! @SLaks मैंने "बॉक्स-शैडो" प्रॉपर्टी सेट करने के लिए जावास्क्रिप्ट स्टाइल ऑब्जेक्ट का उपयोग करने के लिए इस समाधान को एक्सट्रपलेशन किया। document.getElementById("someId").style["box-shadow"]="2px 2px 2px #616161";बहुत अच्छा काम करता है!
एरिक हेपरले - CodeSlayer2010

2
@ EricHepperle-CodeSlayer2010: आपको style.boxShadowइसके बजाय उपयोग करना चाहिए । styleवस्तु धर्मान्तरित CamelCase करने के लिए हाइफ़न।
SLACs

मिठाई! धन्यवाद ... मुझे ऊंट का मामला पसंद है, विधि बेहतर है क्योंकि टाइप करने के लिए कम वर्ण। सत्यापित यह काम करता है !!
एरिक हेपरले - CodeSlayer2010

3

इस उत्तर के अलावा , नोट करें कि Node.js में यदि आप JSON को ऐरे सिंटैक्स के साथ एक्सेस करते हैं, तो []सभी नेस्टेड JSON कुंजियों को सिंटैक्स का अनुसरण करना चाहिए।

यह गलत तरीका है

json.first.second.third['comment']

और आपको 'अपरिभाषित' त्रुटि देगा।

यह सही तरीका है

json['first']['second']['third']['comment'] 

यह एक मुद्दा क्यों है? मुट्ठी रास्ता पूरी तरह से सामान्य दिखता है। क्या यह भाषा में एक बग है?
निकोला डिकिक

यदि आप इस विधि के साथ जाना चाहते हैं। एक कार्यात्मक उपयोगिता का उपयोग करने पर विचार करें जैसे ramdajs.com/docs/#path
अमृत ​​पाल सिंह

2

Ansible के लिए, और hyphen का उपयोग करने के लिए, इसने मेरे लिए काम किया:

    - name: free-ud-ssd-space-in-percent
      debug:
        var: clusterInfo.json.content["free-ud-ssd-space-in-percent"]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.