从字符串

时间:2016-06-11 18:37:03

标签: javascript

我有一个json响应,我从具有不同响应结构的服务器获取。

一个使用另一个值"数据"存储链接:

而另一个没有("图像"是链接):

我想知道是否有办法可以获得" data.link"来自具有可重用方法的关联数组,其中linkVariableName是关联数组的键。

function addLink(responseText, successVariableName, isError, linkVariableName)
{
    var jsonResponse = JSON.parse(responseText);

    var state;
    if (isError)
        state = !jsonResponse[successVariableName];
    else
        state = jsonResponse[successVariableName];

    if (state) {
        var link = jsonResponse[linkVariableName];
        insertAtCursor(textArea, '[img]' + link + '[/img]\r\n');
    } else
        console.log('Error: ' + responseText);
}

所以我可以使用

addLink(response.responseText, 'success', false, 'data.link');

addLink(response.responseText, 'error', true, 'image');

1 个答案:

答案 0 :(得分:1)

是的,您可以,如此处所述:Accessing nested JavaScript objects with string key

然而,IMO功能试图做得太多。为什么需要解析JSON并提取值?您可以直接将值传递给它:

function addLink(link) {
  insertAtCursor(textArea, '[img]' + link + '[/img]\r\n');
}

将另一个逻辑移动到处理响应的位置:

var isError = ...;
var response = JSON.parse(responseText);

if (isError && !response.error) {
  addLink(response.image);
} else if(!isError && response.success) {
  addLink(response.data.link);
} else {
  console.log('Error: ' + responseText);
}