2016-08-20 2 views
2

Ich versuche, Zugang:codHow große JSON-Datei von Huffingtonpost Pollster API zu analysieren

Wahl: "Clinton", Wert: "42.6",

und

Wahl: "Trump" Wert: "37.7"

aus dem folgenden API-Endpunkt: http://elections.huffingtonpost.com/pollster/api/charts.json?topic=2016-president&state=us

ich versuche, die Werte zu erhalten aus das 1. JSON-Objekt, aber es gibt mehrere von ihnen zurück. Die meisten der JSON Tutorials und Fragen, die ich sehe, sind die Standard-JSON, wo ich nur den Wert, aber dieser trickst mich und ich kann es nicht herausfinden

Ich dachte pollObject [0] .Estimates [0] .Wert und pollObject [0] .estimates [1] .value

würde funktionieren, es ist nicht ... wie greife ich diese Werte in Javascript? Ich versuche, sie für ein Schulprojekt

My-Code zu verwenden:

'use strict'; 
var _ = require('lodash'); 
var requestPromise = require('request-promise'); 
var ENDPOINT = 'http://elections.huffingtonpost.com/pollster/api/charts.json?topic=2016-president&state=us'; 

function pollDataHelper() { 

} 

pollDataHelper.prototype.getPoll = function() { 
    var options = { 
     method: 'GET', 
     uri: ENDPOINT, 
     json: true 
    }; 
    console.log('hello333'); 
    return requestPromise(options); 
} 

pollDataHelper.prototype.formatePollData = function(pollObject) { 
    var template = _.template("Currently Clinton is at ${clintonPoll} percent") 
    + "Trump is at ${trumpPoll} percent"; 
    return template({ 
     clintonPoll: pollObject[0].estimates[0].value, 
     trumpPoll: pollObject[0].estimates[1].value 
    }); 
} 

module.exports = pollDataHelper; 
+0

Try Änderung pollObject [0] .estimates [0] .value = jsonVer [0] .estimates [0] .Wert –

+0

Überprüfung der 'last_updated' Eigenschaft zeigt, dass die Umfragen nicht nach Datum sortiert wird, tatsächlich der letzte einschließlich Trump und Clinton ist im Index 3 * (im Moment) *. Das gleiche gilt für die Schätzungen, Sie können sich nicht auf eine bestimmte Reihenfolge verlassen, Sie müssen die 'Choice'-Eigenschaften überprüfen. Da Sie nicht zeigen, wie Sie 'formatePollData' aufrufen, kann ich nicht sagen, was Sie in diese Funktion eingeben, und daher keine Ahnung, was mit Ihrem Code nicht stimmt. Und "Ich dachte ... würde funktionieren, aber es ist nicht" ist eine wirklich schlechte Problembeschreibung. – Thomas

+0

Hinweis: Warum muss ich diesen Helfer instanziieren, wenn er nicht zustandsbehaftet ist? Es ist nur eine Sammlung von 2 Utility-Methoden. – Thomas

Antwort

0

Try Code

var data = JSON.parse('[{"id":797,"title":"2016 General Election: Trump vs. Clinton vs. Johnson","slug":"2016-general-election-trump-vs-clinton-vs-johnson","topic":"2016-president","state":"US","short_title":"2016 President: Trump vs. Clinton vs. Johnson","election_date":"2016-11-08","poll_count":285,"last_updated":"2016-08-20T00:42:15.000Z","url":"http://elections.huffingtonpost.com/pollster/2016-general-election-trump-vs-clinton-vs-johnson","estimates":[{"choice":"Clinton","value":"42.6","lead_confidence":100.0,"first_name":"Hillary","last_name":"Clinton","party":"Dem","incumbent":false},{"choice":"Trump","value":"35.7","lead_confidence":0.0,"first_name":"Donald","last_name":"Trump","party":"Rep","incumbent":false},{"choice":"Johnson","value":"8.7","lead_confidence":null,"first_name":"Gary","last_name":"Johnson","party":"Lib","incumbent":false},{"choice":"Other","value":"4.0","lead_confidence":null,"first_name":"","last_name":"Other","party":null,"incumbent":false}]},{"id":670,"title":"2016 General Election: Santorum vs. Clinton","slug":"2016-general-election-santorum-vs-clinton","topic":"2016-president","state":"US","short_title":"2016 President: Santorum vs. Clinton","election_date":"2016-11-08","poll_count":4,"last_updated":"2016-06-17T21:23:44.000Z","url":"http://elections.huffingtonpost.com/pollster/2016-general-election-santorum-vs-clinton","estimates":[]},{"id":640,"title":"2016 General Election: Trump vs. Sanders","slug":"2016-general-election-trump-vs-sanders","topic":"2016-president","state":"US","short_title":"2016 President: Trump vs. Sanders","election_date":"2016-11-08","poll_count":93,"last_updated":"2016-08-20T00:37:41.000Z","url":"http://elections.huffingtonpost.com/pollster/2016-general-election-trump-vs-sanders","estimates":[{"choice":"Sanders","value":"49.9","lead_confidence":100.0,"first_name":"Bernie","last_name":"Sanders","party":"Dem","incumbent":false},{"choice":"Trump","value":"38.9","lead_confidence":0.0,"first_name":"Donald","last_name":"Trump","party":"Rep","incumbent":false},{"choice":"Other","value":"3.9","lead_confidence":null,"first_name":null,"last_name":null,"party":"N/A","incumbent":false}]},{"id":624,"title":"2016 General Election: Trump vs. Clinton","slug":"2016-general-election-trump-vs-clinton","topic":"2016-president","state":"US","short_title":"2016 President: Trump vs. Clinton","election_date":"2016-11-08","poll_count":285,"last_updated":"2016-08-20T01:39:11.000Z","url":"http://elections.huffingtonpost.com/pollster/2016-general-election-trump-vs-clinton","estimates":[{"choice":"Clinton","value":"47.6","lead_confidence":100.0,"first_name":"Hillary","last_name":"Clinton","party":"Dem","incumbent":false},{"choice":"Trump","value":"39.5","lead_confidence":0.0,"first_name":"Donald","last_name":"Trump","party":"Rep","incumbent":false},{"choice":"Other","value":5.8,"lead_confidence":null,"first_name":"","last_name":"Other","party":null,"incumbent":false}]}]'); 
console.log(data[0].estimates[0].value); 
console.log(data[0].estimates[1].value); 

, wenn Sie alle Daten von Schätzungen erhalten möchten. Sie sollten Schleife verwenden

+0

Ich bekomme die JSON live als eine Anfrage obwohl, so kann ich nicht einfach so haben – Lukeout

+0

was meinst du? Zeig mir deinen Code –

+0

Ich nahm den JSonver heraus weil es auch nicht funktioniert. wenn ich versuche, die Schätzung [0] zu erhalten. Wert Es ist undefined zurück, obwohl, wenn ich die 1. Funktion aufrufen kann ich die gesamte json – Lukeout

0

Versuchen Sie meinen Code. Es läuft Erfolg.

var request = require("request"); 
request({ 
     uri: "http://elections.huffingtonpost.com/pollster/api/charts.json?topic=2016-president&state=us", 

}, function(error, response, body) { 
    // console.log(response.body[0].estimates[0].value); ==> undefined 
    var results = JSON.parse(response.body); 
    console.log(results[0].estimates[0].value); // ==> value = 42.6 
    console.log(results[0].estimates[1].value); // ==> value = 35.7 
}); 
Verwandte Themen