2010-02-23 34 views
11

Tôi đã cố gắng tạo thuộc tính JSON được đặt tên động nhưng tôi vẫn tiếp tục gặp lỗi. Thành thật mà nói tôi không biết nếu điều này có thể đạt được với Javascript. Dù sao thì đây là vấn đề của tôi.Tự động đặt tên cho thuộc tính JSON

Giả sử tôi là tạo ra một đối tượng JSON như đoạn mã sau:

var DTO = { 'NewObject' : GetFormData() }; 
var DTO = { 'UpdateObject' : GetFormData() }; 
var DTO = { 'DelObject' : GetFormData() }; 

Bây giờ những gì tôi đã cố gắng để làm là để tự động đặt tên cho tài sản JSON bởi vì với cái gì đó như 'New' + ClassName (ClassName trở thành một var với một giá trị chuỗi) nhưng nó mang lại cho tôi một lỗi cú pháp. Có cách nào để làm điều này để trở thành một cái gì đó như:

var DTO = { 'New' + ClassName : GetFormData() }; 
var DTO = { 'Update' + ClassName : GetFormData() }; 
var DTO = { 'Delete' + ClassName : GetFormData() }; 

Tôi thực sự đánh giá cao sự giúp đỡ của bạn. Cảm ơn.

Trả lời

25

sẽ phù hợp với nhu cầu này của bạn?

var DTO = {}; DTO['New' + ClassName] = GetFormData(); 
+0

Cảm ơn câu trả lời. –

+0

Bạn được chào đón. –

+0

:) Rất dễ dàng ... Cảm ơn – Ahsan

9

Đây chỉ là "một đối tượng". JSON là một chuỗi tuần tự hóa, không phải là một loại đối tượng.

Nếu bạn muốn sử dụng biến làm tên thuộc tính, thì trước tiên bạn phải tạo một đối tượng, sau đó gán dữ liệu bằng cách sử dụng square bracket notation.

var foo = {}; 
var bar = 'baz'; 
foo[bar] = '123'; 
alert(foo.baz); 
+0

Cảm ơn cho câu trả lời. –

3
var DTO = Object(); 
DTO['New' + ClassName] = GetFormData(); 
+0

Cảm ơn câu trả lời –

2

Với ECMAScript 6, bạn có thể sử dụng tên thuộc tính được tính trong định nghĩa thuộc tính đối tượng.

Ví dụ, bạn chỉ có thể viết:

var DTO = { ['New' + ClassName] : GetFormData() }; 

Thông tin thêm: http://es6-features.org/#ComputedPropertyNames

Các vấn đề liên quan