2016-05-26 6 views
1

Ich arbeite derzeit an einem Projekt, das das CitySDK-Modul verwendet, das auf die API des US Census Bureau zugreift. Ich kann Daten aus der API ziehen und dieser Aspekt funktioniert gut. Ich bekomme tatsächlich Daten zurück, die wie folgt aussehen:JSON Frage mit API

{ 
    "level": "county", 
    "zip": "30519", 
    "variables": [ 
    "income", 
    "poverty" 
    ], 
    "api": "acs5", 
    "year": "2013", 
    "tract": "050606", 
    "sublevel": false, 
    "lat": "+34.0879823", 
    "lng": "-083.9411706", 
    "state": "13", 
    "county": "135", 
    "blockGroup": "3", 
    "place": null, 
    "place_name": null, 
    "data": [ 
    { 
     "income": "60445", 
     "poverty": "113986" 
    } 
    ] 
} 

Es ist fast was ich will! Das Problem, das ich habe, ist, dass ich nur zwei Datenstücke zeigen möchte: [{"Einkommen": "60445", "Armut": "113986"}]} genauer gesagt, ich möchte nur die "60445" und " 113986 "zurückgegeben. Ich weiß, dass sie als Strings zurückgegeben würden, also würde ich sie auch in Zahlen konvertieren müssen. Weiß jemand, wie man das macht? Hier ist mein Code:

HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test File</title> 
</head> 
<body> 

<input type="number" id="zip" placeholder="Zip"></input> 
<input type="number" id="year" placeholder="Year"></input> 
<input type="text" id="variables" placeholder="variables"></input> 
<!--<input type="number" id="tract" placeholder="tract"></input>--> 
<button onclick="data()">Submit</button> 
<ul> 
    <li>population</li> 
    <li>poverty</li> 
    <li>median_male_age</li> 
    <li>median_home_value</li> 
</ul> 

<p>Please note: The data may take 3-5 seconds to appear.</p> 

<p id="data">Data Here:</p> 

<script src="js/api.js"></script> 

JavaScript:

var sdk = new CitySDK(); //Create the CitySDK Instance 
var census = sdk.modules.census; //Create an instance of the module 
census.enable("HIDDEN"); //Enable module   
with the API key 


//creating the request variable. Please note that I have left in income as   
the default variable. 
var request = { 
    "level": "county", 
    "zip": "", 
    "variables": [ 
    "income" 
], 
    "api": "acs5", 
    "year": "", 
    "tract": "" 
}; 

//Function which will gather data from user and then submit it to the API.  
//The API will then return 
//the data that was requested. 
function data(){ 
    var zip = document.getElementById("zip").value; 
    var year = document.getElementById("year").value; 
    var variable = document.getElementById("variables").value; 
    //var tract = document.getElementById("tract").value; 
    request.zip = zip; 
    request.year = year; 
    request.variables.push(variable); 

    //The request to gather the actual data. 
    census.APIRequest(request, function (response) { 

    //Outputs the raw JSON text 
    jQuery("#data").text(JSON.stringify(response, null, 4)); 

    //THE BELOW TWO LINES ARE WHERE I HAVE EXPERIMENTED 
    //jQuery("#data").text(JSON.stringify(response.variables[0], null, 4)); 
    //console.log(JSON.parse(test)); 
    });  
    } 

Der Text (JSON.stringify (response.variables [0] fast bekommt, was ich will "In diesem Fall werde ich ein Einkommen ausgeben. Response.variables [1] würde Armut oder eine andere Variable ausgeben, die der Nutzer eingegeben hat. Ich möchte jedoch nicht Einkommen oder Armut sehen, sondern die Werte, aus." Die API wurde in das Zahlenformat umgewandelt. Jede Hilfe wird geschätzt!

+1

Wenn Sie die Antwort zurück erhalten, ist es bereits eine JavaScript-Objektstruktur. Es zu stringieren macht die Dinge viel schwieriger. Greifen Sie einfach auf 'response.data [0] .income' und 'response.data [0] .poverty' zu. – Pointy

+0

Okay, response.data [0] .Einkommen funktioniert! Ich arbeite gerade daran, den Wert in eine Zahl und nicht in eine Zeichenfolge umzuwandeln! Vielen Dank! –

+0

Um ihnen Nummern zu geben, setzen Sie einfach '+' - '+ response.data [0] .income' voran. – Pointy

Antwort

0

Als spitze erwähnt, die Antwort ist bereits im JSON-Format (vielleicht).

Wenn es so etwas wie response.data [0] .income könnte funktionieren.

Wenn Sie damit umgehen wollen, setzen Sie einen debugger in den Code und öffnen Sie die Konsole.

Oder es ist möglich, es ist nicht im JSON-Format, aber der Server sendet es zurück als eine große Zeichenfolge, in diesem Fall wollen Sie etwas wie JSON.parse(response) tun, um es in JSON-Format zu setzen.

Um Strings in Zahlen zu konvertieren, können Sie etwas wie parseInt oder parseFloat verwenden.

> parseInt("113986") 
< 113986 

> parseFloat("113986.3939393") 
< 113986.3939393