我正在关注这篇文章(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}.
但它没有多大帮助。
任何帮助将不胜感激! 谢谢!
答案 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
索引来访问对象数组的特定元素