访问.json文件中的字段

时间:2016-07-06 19:43:40

标签: javascript json

我正在关注这篇文章(https://www.visualstudio.com/docs/integrate/extensions/develop/add-dashboard-widget)来创建一个小部件,将其添加到microsoft仪表板。

在我的html文件中,有一段我无法工作的代码:

...(some code above)
return TFS_Wit_WebApi.getClient().getRevision(284,6)
                        .then(function (query) {

                            var $list = query.rev;        
                            var $container = $('#query-info-container');
                            $container.empty();
                            $container.append($list);

... (some code below)

在这一行:

  var $list = query.rev; 

我正在尝试访问.json文件“rev”变量。

这是我的.json文件

    {
      "count": 15,
      "value": 
      [
        {
          "id": 284,
          "rev": 1,
          "fields": {
            "System.WorkItemType": "User Story",
            "System.State": "New",
            "System.Reason": "New",
            "System.CreatedDate": "2016-06-23T14:31:37.567Z",
         }, 

...(some code below)

我可以访问这个“rev”变量。

但是,现在我想访问“字段”,即

"System.State": "New",

而不是

var $list = query.rev; 

我试过

var $list = query.fields.System.WorkItemType[0]; 
And 
var $list = query.value.fields[0];
and 
var $list = query.fields; 

然而,这不起作用。

以下是一些关于如何访问

的文档
fields: {[key: string]: any}.

但它没有多大帮助。

任何帮助将不胜感激! 谢谢!

3 个答案:

答案 0 :(得分:1)

试试这个:

 var $list = query.fields["System.WorkItemType"]; 

由于点,JavaScript会将System和WorkItemType解释为嵌套属性。

答案 1 :(得分:1)

您可以将JSON对象用作一种" map",这意味着它们由键值对组成。

var $list = query.fields['System.State'];

正如您在问题中已经提到的,有许多不同的方法来访问JSON对象属性。但是,如果属性的名称中包含点或空格,则需要回退到数组表示法。这意味着以下尝试将会得出正确的结果:

  • query.fields
  • query[fields]
  • query.fields['System.State']
  • query[fields]['System.State']

但下面的内容不会:

  • query.fields.System.State
  • query[fields].System.State

这是因为,在最后两种方式中,JavaScript会认为您正在尝试访问State对象(不存在)的query.fields.System属性。

这同样适用于具有名称包含空格的属性的对象。以object['my property']方式访问它们会有效,但使用带有object.my property的点符号则不会。

有关这方面的其他问题可以在这里看到:

答案 2 :(得分:0)

访问json元素非常简单:

1º创建一个新的var以将json数据转换为新对象。真的json有javascript对象格式。

var data = '{ "count": 15, "value": [ {"id": 284, "rev": 1, "fields": {"System.WorkItemType": "User Story", "System.State": "New", "System.Reason": "New", "System.CreatedDate": "2016-06-23T14:31:37.567Z", }, ...(some code below) '

var json = JSON.parse(data);

2º通过“。”或“[]”访问对象的特定元素:

点符号:

var json.value[n].fields['System.State'];

请注意,您可以使用带有System.State键的点表示法。

[]表示法:

var json['value'][n]['fields']['System.State'];

使用n索引来访问对象数组的特定元素