实现json集合的一个参数



我有JavaScript语言的代码,当我放入console.log(事件)时,输出为:

{"type":"FeatureCollection","features":[{"type":"Feature","id":"","geometry":null,"properties":{"GRAY_INDEX":176}}],"totalFeatures":"unknown","numberReturned":1,"timeStamp":"2021-03-03T14:04:13.362Z","crs":null}

我想要";GRAY_ INDEX";"中的值;属性";部分我该怎么办?这是我的代码:

map.on('singleclick', function(evt) {
document.getElementById('info').innerHTML = '';
var view = map.getView();
var viewResolution = view.getResolution();
var url = UnTiled.getSource().getFeatureInfoUrl(
evt['coordinate'],
viewResolution,
'EPSG:3857', 
{'INFO_FORMAT': 'application/json'}
);
console.log(url);
if (url) {
fetch(url)
.then(function (response) { return response.text(); })
.then(function (html) {
html;
console.log(html);
});
}

});

我试过了:

console.log(html["properties"]

但控制台显示未定义

如果格式化json,您将能够更清楚地看到如何访问它:

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "",
"geometry": null,
"properties": {
"GRAY_INDEX": 176
}
}
],
"totalFeatures": "unknown",
"numberReturned": 1,
"timeStamp": "2021-03-03T14:04:13.362Z",
"crs": null
}

如果以上内容被分配给html,那么要访问GRAY_INDEX值,您需要执行以下操作:

html.features[0].properties.GRAY_INDEX

您可能希望首先使用response.json()而不是response.text()将响应解析为JSON,或者在尝试访问之前添加html = JSON.parse(html)

如果您首先需要将JSON解析为Object,那么您似乎可以在参数"html"中获得JavaScript Object的JSON表示。然后访问功能的属性。Features是一个数组,所以每个实例如果你想获得所有元素的属性,你应该做:

var html = '{"type":"FeatureCollection","features":[{"type":"Feature","id":"","geometry":null,"properties":{"GRAY_INDEX":176}}],"totalFeatures":"unknown","numberReturned":1,"timeStamp":"2021-03-03T14:04:13.362Z","crs":null}';
var o = JSON.parse(html);
o.features.forEach(function(each, index) { 
console.log(`index = ${index}n`,each.properties);
});

最新更新