使用获取请求来获取一些数据。JSON对象路径依赖于一个字符串变量。如何将字符串转换为可以在路径中作为数组引用的对象。这是我的代码:
var path = 'bob';
fetch(request)
.then(function(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response.json();
}).then(function(json) {
var data = json.message.path[0].text;
}).catch(function(error) {
console.log(error);
});
JSON:
{
"message": {
"bob": [
{
"name_id": "3351",
"name": "bob",
"text": "lorem ipsum"
},
{
"name_id": "34562",
"name": "bob",
"text": "lorem ipsum2"
}
]
}
基本上,path
定义了要在点表示法中使用的正确对象。但是-对象还必须能够引用数组。
有什么解决方案吗?
您可以尝试使用:
var data = json.message[path][0].text;
其中path是您定义的对象的名称:
path = "bob";
如果您有user.index
格式的path
变量,您可以在JSON中引用相应的消息,如下所示:
path = path.split(".");
var name = path[0], index = path[1];
var data = json.message[name][index].text;
如果path
是"bob.1"
,则data
将变为"lorem ipsum2"
json.message[name]
对消息数组求值。要对该数组进行索引,只需在值后面放上括号,就像任何其他数组一样:json.message[name][index]
,它等效于(json.message[name])[index]
,它等效为var array = json.message[name]
,然后是array[index]
。
请注意,此解决方案不进行错误检查,如果给定用户不在json.message
中,则会抛出错误。