2015-11-11 15 views
3

我正在使用犀牛。我想使用一个变量来定义映射的键,如下所示:如何在json对象中使用可变定义的键?

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

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

当我解析此JSON,键“关系”,它是文字,而不是限定的变量,其解析为“兄弟” 。有任何想法吗?

“关系不被解析为 “哥哥”,如下图所示的输出:

{ 
    "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 no,也许像这样http://jsfiddle.net/_alexander_/jjzjzs6L/,你需要在 –

+0

@Alexander之前定义空对象我只能得到顶级的例子来运行,对于那些想知道什么工作的人为了我。 –

相关问题