먼저이 매우 일반적인 질문을 드려서 죄송 합니다만이 오류를 해결할 수 없습니다. null 값을 가진 일부 속성이 있습니다. 이 속성은 json[i].outcome_status.category
이며 목표는 범주의 null 속성없이 json 구조에서 각 범주의 발생 횟수를 계산하는 것입니다. 나는 그것을 피하려고 노력하고있다 :json의 null 속성에서 벗어나려고해도 "TypeError : json.outcome_status is undefined"가 표시됩니다.
if(json[i].outcome_status.category != null)
그러나 나는 여전히 그 속성이 null이라는 오류를 얻고있다.
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
// Load the Visualization API and the piechart package.
google.load('visualization', '1', {'packages':['table']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "getData.php",
dataType:"json",
async: false
}).responseText;
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string','category');
dataTable.addColumn('string','context');
dataTable.addColumn('number','id');
dataTable.addColumn('string','location_subtype');
dataTable.addColumn('string','location_type');
dataTable.addColumn('string','month');
dataTable.addColumn('string','persistent_id');
dataTable.addColumn('string','street name');
dataTable.addColumn('string','outcome status');
json=JSON.parse(jsonData);
var counter = 0;
var countAntiSocial = 0;
var countBurglary = 0;
var countCriminal = 0;
var countDrugs = 0;
var countOtherTheft = 0;
var countPublicDisorder = 0;
var countRobbery = 0;
var countShoplifting = 0;
var countVehicleCrime = 0;
var countViolentCrime = 0;
var countOtherCrime = 0;
for (var i=0; i<json.length; i++) {
var row = [];
row.push(json[i].category);
row.push(json[i].context);
row.push(json[i].id);
row.push(json[i].location_subtype);
row.push(json[i].location_type);
row.push(json[i].month);
row.push(json[i].persistent_id);
row.push(json[i].location.street.name);
row.push(json[i].outcome_status ? json[i].outcome_status.category : "null");
dataTable.addRow(row);
//escaping the nulls
if(json[i].outcome_status.category != null) {
if(json.outcome_status.category == "anti-social-behavior"){
countAntiSocial = countAntisocial + 1;
}
if(json[i].outcome_status.category == "burglary"){
countBurglary = countBurglary + 1
}
if(json[i].outcome_status.category == "criminal-damage-arson"){
countCriminal = countCriminal + 1;
}
if(json[i].outcome_status.category == "drugs"){
countDrugs = countDrugs + 1;
}
if(json[i].outcome_status.category == "other-theft"){
countOtherTheft = countOtherTheft + 1;
}
if(json[i].outcome_status.category == "public-disorder-weapons"){
countPublicDisorder = countPublicDisorder + 1;
}
if(json[i].outcome_status.category == "robbery"){
countRobbery = countRobbery + 1;
}
if(json[i].outcome_status.category == "shoplifting"){
countShopLifting = countShopLifting + 1;
}
if(json[i].outcome_status.category == "vehicle-crime"){
countVehicleCrime = countVehicleCrime + 1;
}
if(json[i].outcome_status.category == "violent-crime"){
countViolentCrime = countViolentCrime + 1;
}
if(json[i].outcome_status.category == "other-crime"){
countOtherCrime = countOtherCrime + 1;
alert(countOtherCrime);
}
}
}
var chart = new google.visualization.Table(document.getElementById('chart_div'));
chart.draw(dataTable, {width: 1000, height: 300});
}
</script>
내 PHP : 누군가가 실수 무엇을 발견 할 수 있다면, 그
<?php
$json = file_get_contents('http://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592&date=2013-01');
$json = str_replace("\xe2\x80\xa8", '\\u2028', $json);
$json = str_replace("\xe2\x80\xa9", '\\u2029', $json);
echo $json;
?>
을 감상 할 수있다 여기에 내 코드입니다. 건배
그래,하지만'outcome_status'가 json url에 정의되어 있고'category' 속성을 가지고 있기 때문에 왜'json [i] .outcome_status.category'를 통해 액세스 할 수 없습니까? 나는 마지막 줄의 코드를 시도했지만 여전히'TypeError : json.outcome_status is undefined'를 얻는다. –
@ AndreUk13'json [i] .outcome_status' **가 정의되지 않았기 때문에'json [i] .outcome_status.category'를 사용하여 액세스 할 수 없습니다. 해당 배열 **에있는 객체 중 적어도 하나에는'outcome_status' 속성 **이 없습니다. –
지금 해결!Btw,'outcome_status.category'에서 발생 횟수를 세는보다 효율적인 방법을 알고 있습니까? 당신이 볼 수 있듯이 나는 각 카테고리를 세는 if 문이 8 개 있습니다. 더 효율적인 방법이 있습니까? 다시 한번 감사드립니다. –