วิธีรับค่าออบเจ็กต์ JSON หากชื่อมีจุด?


109

ฉันมีอาร์เรย์ JSON ที่เรียบง่ายมาก (โปรดเน้นที่วัตถุ"point.bean.pointsBase" ):

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

แต่น่าเสียดายที่มันไม่แสดงอะไรเลย
เมื่อฉันเปลี่ยน"points.bean.pointsBase" เป็น smthโดยไม่มีจุดในชื่อ - ทุกอย่างทำงานได้!

อย่างไรก็ตามฉันไม่สามารถเปลี่ยนชื่อนี้เป็นชื่ออื่นโดยไม่มีจุดได้ แต่ฉันต้องได้รับค่า?!
มีตัวเลือกใดบ้างที่จะได้รับ?

คำตอบ:


216

สิ่งที่คุณต้องการคือ:

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

ใน JavaScript คุณสามารถเข้าถึงฟิลด์ใดก็ได้โดยใช้ไฟล์. คุณสามารถเข้าถึงได้โดยใช้ [] ด้วยชื่อฟิลด์เวอร์ชันสตริง


27

ใน javascript คุณสมบัติของวัตถุสามารถเข้าถึงได้ด้วยไฟล์. ตัวดำเนินการหรือด้วยการสร้างดัชนีอาร์เรย์ที่เชื่อมโยงโดยใช้ [] กล่าวคือ. object.propertyเทียบเท่ากับobject["property"]

นี่ควรทำเคล็ดลับ

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


4

ถ้า json object key / name มี dot ...... ! ชอบ

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

กว่าที่คุณจะสามารถเข้าถึงเช่น

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.