Làm cách nào để nhận giá trị đối tượng JSON nếu tên của nó chứa dấu chấm?


108

Tôi có một mảng JSON rất đơn giản (vui lòng tập trung vào đối tượng "points.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

Nhưng, thật không may, nó không hiển thị gì.
Khi tôi thay đổi "points.bean.pointsBase" thành smth mà không có dấu chấm trong tên của nó - mọi thứ đều hoạt động!

Tuy nhiên, tôi không thể đổi tên này thành bất kỳ tên nào khác mà không có dấu chấm, nhưng tôi cần nhận một giá trị?!
Có bất kỳ tùy chọn để có được nó?

Câu trả lời:


215

Những gì bạn muốn là:

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

Trong JavaScript, bất kỳ trường nào bạn có thể truy cập bằng cách sử dụng. , bạn có thể truy cập bằng cách sử dụng [] với phiên bản chuỗi của tên trường.


27

trong javascript, các thuộc tính đối tượng có thể được truy cập bằng. toán tử hoặc với lập chỉ mục mảng kết hợp bằng cách sử dụng []. I E. object.propertytương đương vớiobject["property"]

cái này cần phải dùng mẹo

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


4

Nếu khóa / tên đối tượng json chứa dấu chấm ......! giống

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

Hơn bạn có thể truy cập như

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.