JavaScript如何从JSON中检查是否为空。

9
我正在使用以下JavaScript代码。它可以正常运行,直到遇到一个没有值的结果。在控制台日志中显示:

Uncaught TypeError: Cannot read property 'text' of null

但是我的下面的脚本似乎无法正常工作。

            var checkCaption = photo.caption.text;
            if (checkCaption == null) {
                caption = 'meh';
            } else {
                caption = photo.caption.text;
            }
5个回答

21
在你的例子中,photo.caption 是空的,所以在检查之前,在 photo.caption.text 的调用上你的代码会出错。
var caption;

if(photo.caption != null) { // Covers 'undefined' as well
  caption = photo.caption.text;
} else {
  caption = "meh";
}

1
未捕获的 TypeError: 无法在 null 中使用 'in' 运算符搜索 'text'。 - ngplayground

6

在我的情况下,我使用JSON.stringify来检查是否从REST服务器接收到了{}(空)响应:

 if (JSON.stringify(response.data)=='{}') {
      //the response is null
 }
 else {
      //the response of JSON is not null
 }

对我来说,检查响应是否为空是很好的。


太好了!! :) 对我帮助很大! - Roi Mulia

1
对我来说,检查json对象的长度解决了问题 -
   if Object.keys(jsonobj).length == 0){
     // JSON object is null
    }
   else {
     // JSON object has data 
    }

0

我知道现在有点晚了,但可能对其他人有所帮助。 你可以在一行代码中完成这个操作。

var checkCaption = photo.caption?.text ?? 'meh';

0

你也可以使用

   if ("caption" in photo) {
    caption = photo.caption?.text
   } else {
    caption = "meh"
   }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接