我按照这篇文章 ( 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}.
但这并没有多大帮助。
任何帮助将不胜感激! 谢谢!
最佳答案
您可以将 JSON 对象用作一种“映射”,这意味着它们由键值对组成。
var $list = query.fields['System.State'];
正如您在问题中已经提到的,访问 JSON 对象属性有许多不同的方式。但是,如果属性的名称中包含点或空格,则需要回退到数组表示法。这意味着以下尝试将产生正确的结果:
query.fields
查询[字段]
query.fields['System.State']
查询[字段]['System.State']
但是下面的不会:
query.fields.System.State
查询[字段].System.State
发生这种情况是因为,在最后两种方式中,JavaScript 会认为您正在尝试访问 query.fields.System
对象的 State
属性(这并不存在)。
这同样适用于具有名称包含空格的属性的对象。以 object['my property']
的形式访问它们可以,但使用点符号与 object.my property
则不行。
与此相关的其他问题可以在此处查看:
关于javascript - 访问 .json 文件中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232485/