“'null' 不是对象(评估 'apiData.original_release_date.s

"'null' is not an object (evaluating 'apiData.original_release_date.split')";

本文关键字:original release apiData date 对象 null 评估      更新时间:2023-09-26

我正在制作一个从GiantBomb的API中提取的应用程序,该应用程序将根据搜索的查询显示游戏目录。我希望它显示游戏的图片、标题和添加日期。

基本上我遇到的问题是 API 以非常不合逻辑的方式显示游戏创建日期(例如"1983-12-31 00:00:00"),最后一个字符始终是 00:00:00。(这完全是多余的)我正在使用.split().join()将其删除并替换为空白字符串。虽然一些结果填充并且我看到了结果,

遇到了这个大错误屏幕,给了我这个错误,我无法理解这个错误,因为所有对象都有日期并相应地被替换:

[ERROR] : Script Error { [ERROR] : backtrace = "#0 () at :0"; [ERROR] : line = 54; [ERROR] : message = "'null' is not an object (evaluating 'apiData.original_release_date.split')"; [ERROR] : name = TypeError; ; [ERROR] : }

这也将随机停止无缘无故填充许多其他行。所有这些都有自己的日期。

这是全局对象...:

var nameObject = { name : "", original_release_date : "", image : "",

此循环正在填充

        var posts = json.results;

        //Looping through the posts via JSON/////////////////////////
        for (var i = 0; i < posts.length; i++) {
            var apiData = json.results[i];
            nameObject.name = apiData.name;
            nameObject.original_release_date = apiData.original_release_date.split("00:00:00").join("");
            nameObject.image = apiData.image;
            console.log(nameObject.name);
            console.log(apiData.original_release_date);

我想避免任何正则表达式。任何想法将不胜感激。谢谢!

考虑到你总是在apiData.original_release_date获得像1983-12-31 00:00:00这样的价值。

要拆分,您可以使用:

nameObject.original_release_date = apiData.original_release_date.split(" ")[0];

PS :如果您首先检查数据的格式(意味着它是否按您的预期正确出现),也会更好。

我想出了我的问题!所以正如我所想的,这完全是API的错。一些original_release_date值实际上是空白的,因此null。我也在一些图像中注意到了这一点。我对此的解决方案基本上是在我的for循环中打一堆条件。

        //Looping through the posts via JSON/////////////////////////
        for (var i = 0; i < posts.length; i++) {
            var apiData = json.results[i];
            nameObject.name = apiData.name;
            if (apiData.original_release_date != null) {
                nameObject.original_release_date = apiData.original_release_date.split(" ")[0];
            } else {
                nameObject.original_release_date = "";
            }
            if (apiData.image != null) {
                nameObject.img = apiData.image.super_url;
            } else {
                nameObject.img = "";
            }
            if (apiData.name != null) {
                nameObject.name = apiData.name;
            } else {
                nameObject.name = "(Unknown Game Name)";
            }`

如果有人有更有效的解决方案,请告诉我 - 谢谢!