Если вы хотите использовать переменную для имени свойства, вы можете использовать Вычисленные имена свойств . Поместите имя переменной в квадратные скобки:
var foo = "bar";
var ob = { [foo]: "something" }; // ob.bar === "something"
Если вам нужна поддержка Internet Explorer, вам нужно будет использовать подход ES5 (который можно получить, написав современный синтаксис (как указано выше), а затем применив Babel ):
Сначала создайте объект, а затем добавьте свойство, используя запись в квадратных скобках .
var foo = "bar";
var ob = {};
ob[foo] = "something"; // === ob.bar = "something"
Если вы хотите создать JSON программно, вам придется сериализовать объект в строку, соответствующую формату JSON. например с методом JSON.stringify
.
Вы можете сделать так:
var myObject = {};
CreateProp("myProperty","MyValue");
function CreateProp(propertyName, propertyValue)
{
myObject[propertyName] = propertyValue;
alert(myObject[propertyName]); // prints "MyValue"
};
Я сам предпочитаю такой синтаксис:
function jsonObject()
{
};
var myNoteObject = new jsonObject();
function SaveJsonObject()
{
myNoteObject.Control = new jsonObject();
myNoteObject.Control.Field1= "Fred";
myNoteObject.Control.Field2= "Wilma";
myNoteObject.Control.Field3= "Flintstone";
myNoteObject.Control.Id= "1234";
myNoteObject.Other= new jsonObject();
myNoteObject.Other.One="myone";
};
Затем вы можете использовать следующее:
SaveJsonObject();
var myNoteJSON = JSON.stringify(myNoteObject);
ПРИМЕЧАНИЕ: Это использует json2.js отсюда:http://www.json.org/js. html