javascript - 有没有更漂亮的方法来捕获 JSON 数组块上的错误?
问题描述
我有一堆需要解析的 JSON 数据,但其中一些不存在。
因此,我目前有以下内容,try/catch(e)
但有更优雅的方法吗?
for (var u = 0; u < 100; u++) {
try {
var reactions = JSON.parse(dataParsed.data[u].reactions.summary.total_count)
} catch (err) {
console.log(err)
var reactions = 0
}
try {
var comments = JSON.parse(dataParsed.data[u].comments.summary.total_count)
} catch (err) {
var comments = 0
}
try {
var shares = JSON.parse(dataParsed.data[u].shares.count);
} catch (err) {
var shares = 0
}
postArray.push({
"id": dataParsed.data[u].id,
"message": dataParsed.data[u].message,
"createdTime": dataParsed.data[u].created_time,
"fullPicture": dataParsed.data[u].full_picture,
"reactions": reactions,
"comments": comments,
"shares": shares
})
}
解决方案
var reactions = dataParsed && dataParsed.data[u] && dataParsed.data[u].reactions && dataParsed.data[u].reactions.summary && dataParsed.data[u].reactions.summary.total_count || 0
有一个关于可选链和Nullish Coalescing的提议
var reactions = dataParsed?.data[u]?.reactions?.summary?.total_count ?? 0
推荐阅读
- python - 使用 python elasticsearch 时出现连接错误
- c++ - OpenCV 直方图垫到 Picturebox 的位图
- datetime - 使用 BCP 将日期时间数据导入 SQL Server Warehouse
- javascript - GetGlobalContext 未在 Dynamics CRM 的 HTML 网络资源中定义
- c# - 有没有办法在 Linux 的 C# 中调整控制台的大小?
- zoho - 无法从 zoho 中的授权令牌生成访问令牌
- java - 当多次点击活动导航点击时,为什么第二个活动生命周期方法调用两次
- java - Discord Bot 的命令处理
- wpf - 领域在部署的 WPF/Windows10 应用程序中失败,领域包装器.dll 未找到错误
- python - 如何对两个列表进行相同的排序?