2016-04-16 2 views
1

ich viele Such getan habe, und ich kann einfach nicht mein Kopf scheint zu umwickeln, wie dies zu konvertieren:Turning Array von JSON-Objekte in einem Array für HighCharts/GoogleCharts

[ 
    {"id":749,"time":20160416162403,"value":707}, 
    {"id":750,"time":20160416162407,"value":708}, 
    {"id":751,"time":20160416162411,"value":703}, 
    {"id":752,"time":20160416162415,"value":710} 
] 

In etwas HighCharts oder GoogleCharts kann wie eine Reihe verwenden:

name: [] 
time: [time1, time2, time3] 

ich habe Beispiele gesehen, die nahe waren, dass JQuery verwendet, aber ich kann nicht scheinen, daran zu arbeiten. Wenn jemand ein schnelles Beispiel/eine Lösung zur Verfügung stellen könnte, kann ich von dort mit ihm laufen.

Danke für die Bearbeitung GG, ich werde versuchen, es beim nächsten Mal richtig zu formatieren.

+0

Was Server-Side-Technologie verwenden Sie, wenn überhaupt? Abhängig davon können Sie die Ausgabe auf das bei HighCharts erwartete Format formatieren. –

+0

ist 'ID' etwas, das Sie im Diagramm angezeigt werden möchten? –

+0

Ich mache das auf einem Beaglebone mit Temperatur- und Lichtsensoren. Ich habe den Webserver in Node.JS geschrieben und verwende SQLite3 als meine Datenbank. Alles wurde in JavaScript geschrieben und es wurde kein Framework verwendet. Bitte lassen Sie mich wissen, wenn Sie Code-Beispiele benötigen. id ist einfach ein Platzhalter für die Autoincrement-Funktion der Datenbank. Ich benutze ID in keiner meiner Abfragen. – mRhouse

Antwort

2

Gleiche wie Jeffrey Ansatz, nur reine mit Javascript (in einer geringfügig weniger geeigneter Weise).

var sensorOutput = [ 
     {"id":749,"time":20160416162403,"value":707}, 
     {"id":750,"time":20160416162407,"value":708}, 
     {"id":751,"time":20160416162411,"value":703}, 
     {"id":752,"time":20160416162415,"value":710} 
    ]; 

//Here I declare an output class; 
var outputClass = function() 
{ 
    this.name=''; 
    this.time = []; 
}; 

function convertOutput(inputArray) 
{ 
    //Here I instantiate the class 
    var output = new outputClass(); 

    //And here I populate its array with the input received from the sensors. 
    for(var x=0; x< inputArray.length; x++) 
    { 
     var sensorOutputLine = inputArray[x]; 
     var currentTime = sensorOutputLine.time; 
     output.time.push(currentTime); //Push the item into the time[] array 
    } 
} 

//Function call 
convertOutput(sensorOutput); 

Dies ist der Code, den ich beim ersten Mal entwickelt habe. Wenn Sie erwägen, es zu benutzen, sollten Sie es :)

Verbesserung der JsBin ist hier: https://jsbin.com/mixasihibe/edit?html,js,output

EDIT: die Lesbarkeit des Codes Verbesserte ... Wie langweilig wie Langeweile bedeutet xD

+0

Danke Eric Ich werde beide Ansätze versuchen und sehen, wie es geht. – mRhouse

+1

Ich konnte Ihren Code ohne Änderungen verwenden. Danke noch einmal. – mRhouse

3

Ich glaube, Sie könnten nur einen einfachen Konstruktor für sie bauen:

var jsonObj = [ 
    {"id":749,"time":20160416162403,"value":707}, 
    {"id":750,"time":20160416162407,"value":708}, 
    {"id":751,"time":20160416162411,"value":703}, 
    {"id":752,"time":20160416162415,"value":710} 
] 
var highChartsObj = { 
    time: [], 
    value: [] 
} 
$.each(jsonObj , function(key, val) { 
    highChartsObj.time.push(val.time) 
    highChartsObj.value.push(val.value) 
}); 

Here's a Fiddle for it

+0

Und deshalb muss ich zu Javascript zurückkehren. Hat 10 Minuten gedauert, was du in 5 getan hast: < –

+0

Kannst du es für mich +1 geben? Froh, dass es geholfen hat :) –

+0

Jeffrey danke, ich arbeite gerade an meinem Code, um es zu testen. Ich werde sicher sein, zu +1 und am besten antworten Sie hier in Kürze. – mRhouse

Verwandte Themen