使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
With RESTful API, how I don't make error in the client side if specific response json level is undefined
这是一个简单的响应json:
{
"blog": {
"title": "Blog"
"paragraphs": [{
"title": "paragraph1",
"content": "content1"
}, {
"title": "paragraph2",
"content": "content2"
}, {
"title": "paragraph3",
"content": "content3"
}
],
"selectList": ["food", "play", "mood"]
}
}
如果服务器出现问题,paragraphs
属性undefined
,如何避免在客户端出错?即使我仍然可以成功获取其他数据,例如blog.title
,blog.selectList
...等
如果我不想使用:
if (response.blog && response.blog.paragraphs && response.blog.paragraphs....) {
//do something
}
因为如果JSON对象中有很多级别,那就不是有效的方法。有人有聪明和有效的方法吗?
更新
@MatthewHerbst说:只要检查最低的属性。
如果我只检查最低的属性( response.blog.paragraphs
),那会使 JavaScript 错误,粉碎我的网站。 因为浏览器找到response.blog
是未定义的。在实际情况下,如果response.blog
是undefined
,我将得到response.error
属性,然后if(response.blog.paragraphs)
会遇到错误,因为response
对象没有在javascript中定义blog
属性。我如何检查最低属性?
你可以为此使用 lodash。 例如
let paragraphs = _.get(response, 'blog.paragraphs', null);
if (!paragraphs) {
// Couldn't get from response.
} else {
// Do something with response.blog.paragraphs.
}
你可以做这样的事情-
var blogs = response.blogs;
if(blogs){
//do something
var paraData = blogs.paragraphs;
if (paraData){
// do some more fun
}
}
或
你可以做这样的事情——
var arrKeys = Object.keys(blogs),
newBlogArr = [] // to get the filtered result;
(function(){
for(i=0;i<arrKeys.length;i++){
// to get the filtered defined objects only
if(blogs[arrKeys[i]] !== null || blogs[arrKeys[i]] !== undefined){
//Now simply push that array in newBlogArr;
newBlogArr.push(blogs[arrKeys[i]]);
}
}
return newBlogArr;
})();
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 如何将我的javascript库公开给其他客户端使用
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 返回/从Twit's客户端.get
- 将客户端特定的日期格式返回到服务器MVC4
- MobileFirst:在客户端运行计时器作业-最佳选项
- 标签客户端的设置值
- 我的客户端选项是什么
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 使用javascript在客户端上使用Web服务
- 通过ajax从客户端调用C#方法来执行C#方法
- SignalR客户端启动连接时如何设置用户
- CORS——它是客户端的东西,服务器端的东西,还是传输级别的东西
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错