使用获取请求获取一些数据。 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
定义了点符号中使用的正确对象。但是 - 对象也必须能够引用数组。
任何解决方案?
答案 0 :(得分:1)
您可以尝试使用:
var data = json.message[path][0].text;
其中path是您定义的对象的名称:
path = "bob";
答案 1 :(得分:0)
如果您的格式path
中有user.index
变量,则可以在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
,则会抛出错误。