JSON ऑब्जेक्ट का आकार प्राप्त करें


234

मेरे पास एक json ऑब्जेक्ट है जो AJAX अनुरोध द्वारा वापस आ जाता है और मुझे कुछ परेशानी हो रही है .lengthक्योंकि यह वापस लौटता रहता है undefined। बस सोच रहा था कि क्या मैं इसका सही उपयोग कर रहा हूँ:

console.log(data.length);
console.log(data.phones.length);

वे दोनों undefinedवैध वस्तु होते हुए भी वापस लौट जाते हैं।

अद्यतन:
JSON वस्तु का नमूना लौटा:

{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}

क्या आप लौटे JSON का एक नमूना पोस्ट कर सकते हैं?
जो

मुझे यकीन नहीं है, मुझे नहीं था मुझे लगता है कि आपका सवाल ठीक है, साथ ही साथ।
जो

जवाबों:


555

आप कुछ इस तरह का उपयोग कर सकते हैं

<script type="text/javascript">

  var myObject = {'name':'Kasun', 'address':'columbo','age': '29'}

  var count = Object.keys(myObject).length;
  console.log(count);
</script>

62
@ मैट, IE 7 या 8 में काम करना हर कोड के लिए अनिवार्य नहीं है। इन अपर्याप्त या गैर मानक प्लेटफॉर्मों की सुरक्षा केवल कमियां हैं।
ओलोफू मार्क

5
@OlofuMark हर किसी को यह चुनने के लिए नहीं मिलता है कि वे किस ब्राउज़र का उपयोग कर रहे हैं (उदाहरण के लिए लॉक-डाउन नेटवर्क, संस्करण IE DLL निर्भरताएँ जो इन-हाउस अनुप्रयोगों द्वारा उपयोग की जाती हैं)। यदि पुराने ब्राउज़रों को समायोजित करने के लिए महत्वपूर्ण प्रयास की आवश्यकता होती है, तो उन्हें अनदेखा करना उचित हो सकता है, लेकिन इस तरह के एक तुच्छ मामले में यह सिर्फ अशिष्ट नहीं है
tomfumb

7
@OlofuMark जबकि उन संस्करणों का समर्थन करने की आवश्यकता नहीं है, डेवलपर्स को पता होना चाहिए कि जब वे कोड का उत्पादन करते हैं तो वे कुछ निश्चित संस्करणों पर काम नहीं करेंगे ताकि वे यह तय कर सकें कि उस खाते को लेना है या नहीं।
डेविड नवारे

यह एक ऐसा उपाय है जिसे देखकर JSON को नेस्टेड ऐरे की आवश्यकता नहीं है। मुझे लगा कि JSON की पूरी बात यह है कि सब कुछ एक वस्तु होना चाहिए।
18 फरवरी को Healforgreen

यह एक शानदार समाधान है
जो जोंस

54

आपकी समस्या यह है कि आपके फ़ोन ऑब्जेक्ट की लंबाई संपत्ति नहीं है (जब तक कि आप इसे JSON में कहीं भी परिभाषित नहीं करते हैं कि आप वापस लौटते हैं) ऑब्जेक्ट्स सरणियों के समान नहीं होते हैं, यहां तक ​​कि जब साहचर्य सरणियों के रूप में उपयोग किया जाता है। यदि फ़ोन ऑब्जेक्ट एक सरणी होता तो उसकी लंबाई होती। आपके पास दो विकल्प हैं (शायद अधिक)।

  1. अपनी JSON संरचना बदलें (यह मानते हुए कि यह संभव है) ताकि 'फ़ोन' बन जाएं

    "phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}]

    (ध्यान दें कि प्रत्येक फोन के लिए कोई शब्द-संख्या पहचानकर्ता नहीं है क्योंकि वे 0-अनुक्रमित सरणी में वापस आ जाते हैं)। इस प्रतिक्रिया में phones.lengthमान्य होगा।

  2. अपने फोन ऑब्जेक्ट के भीतर निहित वस्तुओं के माध्यम से अलग करें और जैसे ही आप जाते हैं, उन्हें गिनें

    var key, count = 0;
    for(key in data.phones) {
      if(data.phones.hasOwnProperty(key)) {
        count++;
      }
    }

यदि आप केवल नए ब्राउज़रों को लक्षित कर रहे हैं तो विकल्प 2 इस तरह दिख सकता है


मैं पहले समाधान के साथ JSON ऑब्जेक्ट की लंबाई कैसे प्राप्त करूंगा कि मेरी JSON ऑब्जेक्ट को jsonObject नामक एक चर में संग्रहीत किया गया है और मेरे पास ऊपर के समान JSON है: "फ़ोन": [{"संख्या": "XXXXXXXXXX" , "टाइप": "मोबाइल"}, {"नंबर": "XXXXXXXXXXX", "टाइप": "मोबाइल"}]
Erick

29

अंडरस्कोर.जे का उपयोग करने पर विचार करें । यह आपको आकार की जांच करने की अनुमति देगा अर्थात:

var data = {one : 1, two : 2, three : 3};
_.size(data);
//=> 3
_.keys(data);
//=> ["one", "two", "three"]
_.keys(data).length;
//=> 3

24

आपको अपने JSON प्रारूप को बदलने की आवश्यकता नहीं है।

बदलने के:

console.log(data.phones.length);

साथ में:

console.log( Object.keys( data.phones ).length ) ;

16
var json=[{"id":"431","code":"0.85.PSFR01215","price":"2457.77","volume":"23.0","total":"565.29"},{"id":"430","code":"0.85.PSFR00608","price":"1752.45","volume":"4.0","total":"70.1"},{"id":"429","code":"0.84.SMAB00060","price":"4147.5","volume":"2.0","total":"82.95"},{"id":"428","code":"0.84.SMAB00050","price":"4077.5","volume":"3.0","total":"122.32"}] 
var obj = JSON.parse(json);
var length = Object.keys(obj).length; //you get length json result 4

2
यह पहले से ही पार्स किया गया json ऑब्जेक्ट है। यदि आप उपरोक्त कथनों को निष्पादित करते हैं, तो यह आपको एक त्रुटि देगा 'अनसीन टोकन ओ इन जोंसन'। Json की लंबाई की गणना के लिए आप सीधे var length = Object.keys (json) .length कर सकते हैं।
आयुषी


-3

इस का उपयोग करें

//for getting length of object
 int length = jsonObject.length();

या

//for getting length of array
 int length = jsonArray.length();

6
लंबाई () एक JSON ऑब्जेक्ट funtion नहीं है
Sunding Wei

-5
$(document).ready(function () {
    $('#count_my_data').click(function () {
        var count = 0;
        while (true) {
             try {
                var v1 = mydata[count].TechnologyId.toString();
                count = count + 1;
            }
            catch (e)
            { break; }
        }
        alert(count);
    });
});

1
यह बताने के लिए कि आपकी सूची तत्वों से बाहर हो गई है, एक अपवाद की प्रतीक्षा करना एक बुरा विचार है, और यह दृष्टिकोण चुपचाप गलत गिनती देगा यदि कोई तत्व (यहां तक ​​कि अंतिम) TechnologyIdसंपत्ति गुम है
tomfumb

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