我有一个从具有不同响应结构的服务器获得的 json 响应。
使用另一个值“数据”来存储链接:
另一个则没有(“image”是链接):
我想知道是否有一种方法可以使用可重用的方法从关联数组中获取“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');
最佳答案
是的,您可以,如下所述:Accessing nested JavaScript objects with string key
但是,在我看来,该函数尝试做的事情太多了。为什么需要解析 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);
}
关于javascript - 从带有字符串的关联数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767282/