在引用请求中的JSON对象时使用字符串



使用获取请求来获取一些数据。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中,则会抛出错误。

最新更新