2013-02-03 21 views
5

Tôi đang cố gắng để thực hiện một JSON động nhưng khi tôi làm điều gì đó như thế này:tên động trong json chính

var jsonVar = { 
    "section": {} 
} 

var elementsStoragePrefix = "_app_", 
    elementName = elementsStoragePrefix + "some_name"; 

$.extend(jsonVar .section, { elementName: "<option>This is a text</option>"}); 

Tôi có chìa khóa như elementName và không _app_some_name

jsonVar.section => 
    Object 
     elementName: "<option>This is a text</option>" 
     __proto__: Object 

Trả lời

9

Khi tạo các đối tượng literals, bạn không cần phải trích dẫn các tên thuộc tính, vì vậy trong ví dụ của bạn elementName sẽ được thực hiện theo nghĩa đen. Rất may, bạn có thể sử dụng-khung-cú pháp vuông (hoặc tùy ý bạn đánh vần đó):

var extendObject = {}; 
extendObject[elementName] = '<option>Foobar</option>'; 
$.extend(jsonVal.section, extendObject); 
//or, to use brackets all the way: 
$.extend(jsonVal['section'], extendObject); 

Điều đó sẽ sửa chữa những thứ cho bạn

4
jsonVar.section[elementName] = "<option>This is a text</option>"; 
Các vấn đề liên quan