এর নাম বিন্দু থাকলে JSON অবজেক্টের মান কীভাবে পাবেন?


108

আমার কাছে খুব সাধারণ জেএসওন অ্যারে রয়েছে (দয়া করে "পয়েন্টস.বেইন.পয়েন্টসবেস" অবজেক্টটিতে ফোকাস করুন ):

var mydata =   
{"list":  
  [  
    {"points.bean.pointsBase":  
      [  
        {"time": 2000, "caption":"caption text", duration: 5000},  
        {"time": 6000, "caption":"caption text", duration: 3000}  
      ]  
    }  
  ]  
};  

// Usually we make smth like this to get the value: 
var smth = mydata.list[0].points.bean.pointsBase[0].time; 
alert(smth); // should display 2000

কিন্তু, দুর্ভাগ্যক্রমে, এটি কিছুই প্রদর্শন করে না।
যখন আমি "পয়েন্টস.ইইন.পয়েন্টসবেস" পরিবর্তন করি যখন এর নামে বিন্দুবিহীন স্মিথ - সমস্ত কিছু কাজ করে!

যাইহোক, বিন্দু ছাড়া আমি এই নামটি অন্য কোনও কিছুর কাছে বদলাতে পারি না, তবে আমার কোনও মূল্য পাওয়া দরকার?!
এটি পেতে কোন বিকল্প আছে?

উত্তর:


215

আপনি যা চান তা হ'ল:

var smth = mydata.list[0]["points.bean.pointsBase"][0].time;

জাভাস্ক্রিপ্টে, যে কোনও ক্ষেত্রে আপনি ব্যবহার করে অ্যাক্সেস করতে পারেন। অপারেটর, আপনি ক্ষেত্রের নামের স্ট্রিং সংস্করণ সহ [] ব্যবহার করে অ্যাক্সেস করতে পারেন।


27

জাভাস্ক্রিপ্টে, অবজেক্টের বৈশিষ্ট্যগুলি ব্যবহার করা যেতে পারে। অপারেটর বা এসোসিয়েটিভ অ্যারে ইনডেক্সিং সহ [] ব্যবহার করে। অর্থাত। object.propertyসমতুল্যobject["property"]

এই কৌতুক করতে হবে

var smth = mydata.list[0]["points.bean.pointsBase"][0].time;


4

যদি জসন অবজেক্ট কী / নামটিতে ডট থাকে ......! মত

var myJson = {"my.name":"vikas","my.age":27}

আপনি যেমন অ্যাক্সেস করতে পারেন তুলনায়

myJson["my.name"]
myJson["my.age"]

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