【发布时间】:2019-11-17 00:46:54
【问题描述】:
我有一堆需要解析的 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
})
}
【问题讨论】:
-
dataParsed是否已经被解析(就像名字所暗示的那样),或者没有?如果是,为什么还要JSON.parse?如果不是,您不应该只解析第一部分——顶层的 JSON 字符串(即JSON.parse(dataParsed).data[u].comments.summary.total_count)吗? -
向我们展示
dataParsed的外观以获得更好的答案。特别是,如果它已经是一个对象,或者仍然是一个字符串。
标签: javascript try-catch default-value short-circuiting