2014-11-13 2 views
0

나는 검색된 쿼리에 따라 게임 목록을 표시 할 GiantBomb의 API에서 가져온 앱을 만들고 있습니다. 내가 추가 한 게임의 그림, 제목 및 날짜를 ​​표시하고 싶습니다." 'null'은 (apiData.original_release_date.split '을 평가하는) 객체가 아닙니다.";

기본적으로 내가 겪고있는 문제는 게임이 매우 논리적 인 방식으로 만들어진 날짜를 표시한다는 것입니다 (예 : "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 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); 

에 의해 채워되고

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

나는 어떤 정규식을 피하고자합니다. 어떤 아이디어라도 크게 감사 할 것입니다. 감사!

+0

범프! 나는 이것을 정말로 빨리 알아낼 필요가있다. 감사합니다. – Sterling

답변

0

항상 1983-12-31 00:00:00과 같은 값이 apiData.original_release_date 인 것으로 간주하십시오.

은 당신이 사용할 수있는 분할하려면 :

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

P.S이 : 먼저 데이터의 형식을 확인하는 경우 또한 그것은 더 나은 것 (당신이 예상대로 제대로 온다면 의미).

+0

좋아, 게시 한대로 분할을 변경했습니다. 그러나 나는 여전히 오류가 발생했습니다. 또한 데이터의 형식을 정확히 확인한다는 것은 무엇을 의미합니까? API를 의미합니까? JSON 또는 XML 에서처럼? 그렇다면 이미 JSON으로 구문 분석했습니다. – Sterling

+0

또 다른 머리를 들고 코드가 실제로 작동합니다. 오류를 닫으면 날짜가 계속 작동하는 것을 볼 수 있습니다. – Sterling

+0

귀하가 제공 한 형식 ('1983-12-31 00 : 00 : 00')으로 항상 날짜가 표시됩니다. 어떤 식 으로든 날짜가이 형식 ('2014-11-14T04 : 59 : 43.291Z')과 같은 경우처럼 문제가 될 수 있습니다. – turtle

0

나는 내 문제를 알아 냈습니다! 그래서 내가 생각하기에, 이것은 전적으로 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)"; 
      }` 

누구보다 효율적인 해결책이 있다면 알려 주시기 바랍니다 - 감사합니다!

관련 문제