कमांड लाइन का उपयोग करके JSON ऑब्जेक्ट में आइटम कैसे गिनें?


179

मुझे JSONएक curlकमांड से इस तरह का उत्तर मिल रहा है :

[
  {
    "cid": 49,
    "pyn": "yi4",
    "hans": "亿",
    "hant": "億",
    "tid": 68,
    "l10n": "cent million",
    "pid": 1,
    "pos": "num",
    "pos_txt": ""
  },
  {
    "cid": 50,
    "pyn": "yi4",
    "hans": "亿",
    "hant": "億",
    "tid": 69,
    "l10n": "100 millions",
    "pid": 1,
    "pos": "num",
    "pos_txt": ""
  }
]

मैं एक कमांड लाइन (उदाहरण ) 2का उपयोग करके (यहाँ ) सरणी में आइटमों की संख्या कैसे गिन सकता हूं ?Bashunderscore


क्या जावास्क्रिप्ट समाधान, आपके लिए ठीक है?
Thefourtheye

NPMमॉड्यूल के माध्यम से हाँ। नहीं तो नहीं।
लोपेज़

मेरे समाधान की जाँच करें। यह कोई npm की जरूरत है। सादा जावास्क्रिप्ट।
thefourtheye

1
मैं एक बैश संदर्भ में हूं, वेब नहीं
Ldouard Lopez

आपको पता है कि आप जावास्क्रिप्ट को शेल में निष्पादित कर सकते हैं, है ना?
thefourtheye

जवाबों:


358

बस मिश्रण में एक और समाधान फेंक ...

कोशिश करें jq, एक हल्का और लचीला कमांड लाइन JSON प्रोसेसर:

jq length /tmp/test.json

वस्तुओं की सरणी की लंबाई प्रिंट करता है।


4
आपका आरंभिक jqकोड ( .[]) objectरूट एरे में प्रत्येक की लंबाई लौटाता है , जबकि मैं रूट एरे की लंबाई की तलाश कर रहा हूं। को ठीक करने की आवश्यकता है.
oudouard लोपेज

11
यदि आपकी जड़ एक सरणी नहीं है, लेकिन एक कुंजी के साथ एक वस्तु है जिसमें एक सरणी है, ({"key": [elem1, elem2]}, तो आप उपयोग कर सकते हैंjq '.[] | length' file.json
bitek

8
कमाल का उपकरण है, jqहै। +1
ऑरी बैंड

उस @MnemonicFlow के लिए एक और उपयोगी विकल्प है jq map_values(length) file.json। जो आपको चाबी भी देगा।
19o में पाउलो कैसरेटो

3
और यदि आपका इनपुट एकल सरणी के बजाय स्वतंत्र ऑब्जेक्ट से बना है, तो आप -sया --slurpविकल्प का उपयोग करेंगे , जो उन्हें पढ़ते हुए एक सरणी में एकत्रित करता है:jq -s length file.json
हेमफ्लिट


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