कमांड लाइन का उपयोग करके 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.