2015-03-03 5 views
5

जबकि मेरी json पार्स करने मैं JQ और एक मुद्दा का सामना करना पड़ के लिए नया हूँ है json से डेटा हो रहीJQ का उपयोग करते समय कुंजी संख्यात्मक स्ट्रिंग

मैं इस

temp='{ "1": { "my_name": "one" }, "2": { "my_name": "two" } }' 

अब की तरह एक चर में संग्रहीत एक json है मैं दोनों अन्य प्रविष्टियों

मैं इस

echo $temp | jq '.1' //out put 0.1 
I was assuming to get { "my_name": "one" } 
की तरह कुछ की कोशिश की है के लिए my_name का मूल्य प्राप्त करने की आवश्यकता

और इसी तरह my_name मूल्य प्राप्त करने मैं

echo $temp | jq '.1.my_name' // Its output is giving me error 

किया किसी भी एक कृपया मेरी वाक्य रचना के साथ गलत है और मैं इसे कैसे सही कर सकते हैं पहचान करने में मदद कर सकते हैं।

धन्यवाद

+2

कृपया सटीक कमांड और त्रुटि संदेश को शामिल करने के लिए अपने प्रश्न को संपादित करें। इसके अलावा, मैं प्रोग्रामिंग खोलता हूं, यह किसी भी परिवर्तनीय उपयोग को उद्धृत करने के लिए एक अच्छा नियम-अंगूठा है (बहुत कम विशेष मामलों को छोड़कर)। 'echo" $ temp "| ... मदद कर सकता है। सौभाग्य। – shellter

+0

हाय @shellter उद्धरण के चारों ओर लपेटकर अभी भी एक ही परिणाम दे रहा है। – user2243651

+0

'echo" $ temp "के बारे में मेरी टिप्पणी सलाह का एक सामान्य मामला है। मेरा कहना यह नहीं था कि यह आपकी समस्या का समाधान करेगा। मेरा मानना ​​है कि मेरी टिप्पणी के लिए '1' अपवोट मेरे अनुरोध के लिए है कि आप अपने प्रश्न को संपादित कर रहे हैं जिसमें आप जिस निष्पादन को निष्पादित कर रहे हैं और आपको प्राप्त होने वाले त्रुटि संदेश का सटीक पाठ शामिल करना है। सौभाग्य। – shellter

उत्तर

5

बस संख्या को एक फ्लोट के रूप में व्याख्या किया जाता है। आपको इसे किसी संदर्भ में उपयोग करने की आवश्यकता है जहां यह स्पष्ट रूप से एक महत्वपूर्ण स्ट्रिंग है।

echo "$temp" | jq '.["1"]["my_name"]' 

और

echo "$temp" | jq '.["1"]' 

युक्त dict मिलता है।

एक पर्याप्त नई jq (मुझे लगता है कि> = 1.4) के साथ

आप भी

echo "$temp" | jq '."1".my_name' 
1

कह सकते हैं जब भी आप एक महत्वपूर्ण यह है कि एक वैध पहचानकर्ता नहीं है संदर्भित करने के लिए कोशिश कर रहे हैं, तो आप इसे उद्धृत करने के लिए किया है। अधिक जानकारी के लिए manual देखें।

कुंजी 1 के तहत आइटम का चयन करने के लिए, यदि आप ऐसा करते हैं: my_name मान प्राप्त करने के लिए कैसे पर अपने अन्य प्रश्न के लिए

."1" 

, तो आप ऐसा कर सकते हैं:

to_entries | map(.value.my_name) 
संबंधित मुद्दे