使用 Javascript 从 API 响应中剥离 @
Strip @ from API response with Javascript
我正在使用一个提供如下响应的 api:
{
"statuses": {
"status": [
{
"@array": "true",
"@id": "1",
"@uri": "https://api.com/people/statuses/1",
"name": "Member",
...
]
}
}
我需要使用 javascript 将 @ 从键名中删除。 例如"@id"到"id"。 我该怎么做?
您必须手动迭代和重命名每个键,并删除给定状态的原始属性。类似的东西
response.statuses.status.forEach(function(status) {
var keys = Object.keys(status),
keyCount = keys.length;
for (var j = 0; j < keyCount; j++) {
var thisKey = keys[j];
status[thisKey.replace('@', '')] = status[thisKey];
delete status[thisKey];
}
});
除了像其他人所说的那样循环使用键并构建一个新对象之外,您可能会变得非常疯狂并执行以下操作:
// convert to string, if not already a string response
var responseStr = JSON.stringify(myObj);
// REGEX AWAY THE STUFF
responseStr = reponseStr.replace(/@/g, "");
// convert to obj
myObj = JSON.parse(responseStr);
虽然,如果您的任何数据自然@
其中,它就会被正则表达式淘汰。我知道,这太疯狂了。认为可能值得一提。
你不能只重命名javascript对象中的键,但你总是可以扩展响应对象。 这样的东西会起作用:
for(var i = 0; i < statuses.status.length; i++){
var status = statuses.status[i];
status.array = status["@array"];
status.id = status["@id"];
status.uri = status["@uri];
// could also delete properties here... see below...
}
这将为您提供所需的内容,尽管所有带有"@"的属性仍然存在。 不过,您可以更进一步并删除这些属性。
delete status["@array"];
delete status["@id"];
delete status["@uri"];
我希望这就是你要找的。 让我知道这是否有帮助!
function stripSymbol(obj) {
var type = Object.prototype.toString.call(obj);
if (type === '[object Array]') {
for (var i = 0, len = obj.length; i < len; i++) {
stripSymbol(obj[i]);
}
} else if (type == '[object Object]') {
Object.keys(obj).forEach(function(key) {
if (key[0] === '@') {
var newKey = key.substr(1);
obj[newKey] = obj[key];
delete key;
key = newKey;
}
stripSymbol(obj[key]);
});
}
}
stripSymbol(data);
这将递归地爬取和反对,并删除任何键开头的"@"。
首先,数组可能是任何JavaScript解析器的保留字,但忽略了尝试这个...
statuses.status[0].array = statuses.status[0]["@array"];
delete statuses.status[0]["@array"];
你需要这样做的原因是 JavaScript 不支持重命名键。
相关文章:
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Ajax响应转换
- 使Intro.js工具提示响应
- 从Json Ajax响应中剥离标记
- 使用 Javascript 从 API 响应中剥离 @
- 难以从AJAX响应中剥离HTML标记
- 我怎样才能进行“剥离”呢?包含HTML响应,可以是任何东西