2015-11-11 4 views
3

Я использую носорог. Я хочу использовать переменную для определения ключа карты, как показано ниже:Как использовать переменные ключи в объекте json?

var name = "Ryan"; 
var relationshipType = "brother"; 
var relatedName = "David"; 

var json = { 
       "name": name, 
       "relationships": { 
        relationshipType: relatedName 
       } 
      }; 

Когда я разобрать этот JSON, ключ «RelationshipType», это дословный вместо определенной переменной, которая рассасывается на «брата» , Есть идеи?

«RelationshipType не разбираемый на "брата", как показано на рисунке выхода:

{ 
    "name": Ryan, 
    "relationships": { 
     relationshipType: David 
    } 
}; 

ответ

3

Вы можете использовать bracket notation, как этот

var name = "Ryan"; 
 
var relationshipType = "brother"; 
 
var relatedName = "David"; 
 

 
var json = { 
 
    "name": name, 
 
    "relationships": {} 
 
}; 
 

 
json[relationshipType] = relatedName; 
 

 
console.log(json);

Если вы можете использовать синтаксис ES6, вы можете решить эту проблему следующим образом:

var name = "Ryan"; 
var relationshipType = "brother"; 
var relatedName = "David"; 

var json = { 
    "name": name, 
    "relationships": { 
    [relationshipType]: relatedName 
    } 
}; 

Example

+1

Вы можете и вы должны. Синтаксис буквенного объекта не допускает переменные AFAIK. –

+1

@ Stephen D нет, может быть, как это http://jsfiddle.net/_alexander_/jjzjzs6L/, вам нужно определить пустой объект до –

+0

@Alexander Я смог получить только лучший пример для тех, кому интересно, что сработало для меня. –

Смежные вопросы