জেসন বস্তুর আকার পান get


234

আমার কাছে একটি জেএসন বস্তু রয়েছে যা একটি এজেএক্স অনুরোধের মাধ্যমে ফিরে আসে এবং আমি কিছুটা সমস্যায় .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>

61
@ ম্যাট, প্রতিটি কোড আইই 7 বা ৮ এ কাজ করা বাধ্যতামূলক নয়, সুরক্ষিত এই অপর্যাপ্ত বা অ-মানক প্ল্যাটফর্মগুলি কেবল ত্রুটি are
অলিফু মার্ক

5
@ অলফুমার্ক প্রত্যেকে যে ব্রাউজারটি ব্যবহার করছেন তা বেছে নেবেন না (যেমন লকড ডাউন নেটওয়ার্কগুলি, ইন-হাউজ অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহৃত আই ডিএলএল নির্ভর সংস্করণ)। পুরানো ব্রাউজারগুলিকে সমন্বিত করার জন্য যদি উল্লেখযোগ্য প্রচেষ্টা প্রয়োজন হয় তবে তাদের উপেক্ষা করা ন্যায়সঙ্গত হতে পারে, তবে এটি যেমন একটি তুচ্ছ ঘটনায় এটি করা কেবল
অসভ্য

7
@ অলফুমার্ক এই সংস্করণগুলিকে সমর্থন করার প্রয়োজন নেই, তবে বিকাশকারীদের জানা উচিত যে তারা যখন উত্পন্ন কোডটি নির্দিষ্ট সংস্করণগুলিতে কাজ করবে না যাতে তারা সিদ্ধান্ত নিতে পারে যে এটিকে বিবেচনায় নেওয়া হবে কি না।
ডেভিড নাভারে

এটি এমন এক সমাধান দেখে ভাল লাগছে যাতে জেএসওনকে নেস্টেড অ্যারে করার প্রয়োজন হয় না। আমি ভেবেছিলাম JSON এর পুরো বিন্দুটি হ'ল সবকিছু একটি বস্তু হওয়া উচিত।
হিলফোরগ্রিন


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 অবজেক্টটি jsonObject নামে পরিচিত একটি ভেরিয়েবলে সঞ্চিত আছে এবং আমার উপরে JSON রয়েছে: "ফোনস": [{"সংখ্যা": "এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স , "প্রকার": "মোবাইল"}, {"নম্বর": "এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স", "টাইপ": "মোবাইল"}]
এরিক

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
এটি ইতিমধ্যে পার্স করা জসন বস্তু। আপনি যদি উপরের বিবৃতিগুলি সম্পাদন করেন তবে এটি আপনাকে 'জসনে অপ্রত্যাশিত টোকেন ও' একটি ত্রুটি দেয়। জসনের দৈর্ঘ্য গণনার জন্য আপনি সরাসরি ভার দৈর্ঘ্য = অবজেক্ট.কিজ (জেসন)। দৈর্ঘ্য করতে পারেন।
আয়ুশি


-3

এই এক ব্যবহার করুন

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

অথবা

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

6
দৈর্ঘ্য () কোনও JSON অবজেক্ট
ফান্ট

-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সম্পত্তি অনুপস্থিত থাকলে এই পদ্ধতিটি নীরবে ভুল গণনা দেবে
টমফম্ব

1
এই কোডটি এতটাই খারাপ, যে আমি আরও মন্তব্য করতে চাই না। ভোট দিয়েছেন -১!
জর্জি-ই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.