首页 > 解决方案 > 有没有更漂亮的方法来捕获 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
      })
}

标签: javascripttry-catchdefault-valueshort-circuiting

解决方案


您可以使用&&短路)和||默认值

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

推荐阅读