在请求中引用JSON对象时使用string

时间:2016-08-07 00:03:36

标签: javascript arrays json string

使用获取请求获取一些数据。 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定义了点符号中使用的正确对象。但是 - 对象也必须能够引用数组。

任何解决方案?

2 个答案:

答案 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,则会抛出错误。