2012-04-11 14 views
0

Ich verwende eine Diagrammbibliothek, die benötigt, dass die Eingabe wie ein Format aussieht. Dieses Format sieht aus wie JSON, aber es ist nicht, und hier habe ich einige Daten teilen eine Idee über das Format zu erhalten:Formatieren von Daten in JSON wie Format

[{ 
        year: 2005, 
        income: 23.5, 
        expenses: 18.1 
       }, { 
        year: 2006, 
        income: 26.2, 
        expenses: 22.8 
       }, { 
        year: 2007, 
        income: 30.1, 
        expenses: 23.9 
       }, { 
        year: 2008, 
        income: 29.5, 
        expenses: 25.1 
       }, { 
        year: 2009, 
        income: 24.6, 
        expenses: 25.0 
       }]; 

Sie können das komplette Beispiel in this link sehen. In meinem ersten Test habe ich String.concat(anotherString) verwendet, aber ich versichere Ihnen, dass es nicht bequem ist. Gibt es eine Java API, die dieses Format bietet? Vielen Dank im Voraus.

+0

Das ist nah genug zu JSON, dass ich wette, dass es JSON akzeptiert. Das einzige, was dieses ungültige JSON macht, ist das Fehlen von Anführungszeichen um die Schlüsselnamen herum. – Corbin

+0

Das sieht wie JavaScript im Gegensatz zu JSON aus. Wenn das stimmt, sollten Sie in der Lage sein, JSON an seiner Stelle zu verwenden, und alles funktioniert einfach. –

+1

Das Fehlen von Anführungszeichen um die Schlüsselnamen stammt von Javascript. Dies wird direkt aus einem Javascript-Beispiel übernommen. Wenn es ** dieses Format benötigt, benutze einfach einen json formatter und dann jsonString.replace ("\" "," ") – Joel

Antwort

1

Nun, der einzige Unterschied zwischen diesem Format und JSON sieht aus, als müssten Sie nur doppelte Anführungszeichen aus den Strings entfernen. Also data.replaceAll ("\" "," "); soll den Job erledigen.

aber tatsächlich, beim Lesen des Beispiels, akzeptiert es gültige JSON. Sie sollten versuchen, eine $ .ajax() -Methode zu verwenden, etwas, das aussehen würde.

AmCharts.ready(function() {$.ajax({ 
     url: '/mydata/', 
     dataType: 'json', 
     data: undefined, 
     success: function(chartData) { 
       // SERIAL CHART 
       chart = new AmCharts.AmSerialChart(); 
       chart.dataProvider = chartData; 
       chart.categoryField = "year"; 

       // AXES 
       // category 
       var categoryAxis = chart.categoryAxis; 
       categoryAxis.gridAlpha = 0.1; 
       categoryAxis.axisAlpha = 0; 
       categoryAxis.gridPosition = "start"; 

       // value 
       var valueAxis = new AmCharts.ValueAxis(); 
       valueAxis.stackType = "regular"; 
       valueAxis.gridAlpha = 0.1; 
       valueAxis.axisAlpha = 0; 
       chart.addValueAxis(valueAxis); 

       // GRAPHS 
       // first graph  
       var graph = new AmCharts.AmGraph(); 
       graph.title = "Europe"; 
       graph.labelText = "[[value]]"; 
       graph.valueField = "europe"; 
       graph.type = "column"; 
       graph.lineAlpha = 0; 
       graph.fillAlphas = 1; 
       graph.lineColor = "#C72C95"; 
       chart.addGraph(graph); 

       // second graph    
       graph = new AmCharts.AmGraph(); 
       graph.title = "North America"; 
       graph.labelText = "[[value]]"; 
       graph.valueField = "namerica"; 
       graph.type = "column"; 
       graph.lineAlpha = 0; 
       graph.fillAlphas = 1; 
       graph.lineColor = "#D8E0BD"; 
       chart.addGraph(graph); 

       // third graph        
       graph = new AmCharts.AmGraph(); 
       graph.title = "Asia-Pacific"; 
       graph.labelText = "[[value]]"; 
       graph.valueField = "asia"; 
       graph.type = "column"; 
       graph.lineAlpha = 0; 
       graph.fillAlphas = 1; 
       graph.lineColor = "#B3DBD4"; 
       chart.addGraph(graph); 

       // LEGEND     
       var legend = new AmCharts.AmLegend(); 
       chart.addLegend(legend); 

       // WRITE 
       chart.write("chartdiv"); 
      }); 
     } 
    }); 

(sorry, ich bin weit davon entfernt, gut zu sein in Javascript zu schreiben, aber ich denke, die Idee ist es) auch vielleicht die API von amCharts können Sie direcly zu einer lokalen URL überprüfen. und dann werden, müssen Sie nur Ihre JSON-Daten als REST Aufruf zu routen.

+0

Sorry @zmo, aber ich verstehe nicht, was meinst du mit der $ .ajax() Methode? –

+0

Nun, die Idee ist, jquery's $ .ajax() -Methodenaufruf zu verwenden, der die JSON-Daten eines Servers von einem Javascript-Dienst auf dem Client-Endpunkt herunterladen und deserialisieren kann. Die einzige Sache ist, dass JavaScript-Code dazu neigt, sehr hässlich zu sein (imho) :) – zmo

+0

OK, ich habe den Punkt.Dies wäre eine gute Idee, wenn ich auf der Clientseite natives Javascript verwenden würde, aber in meinem Fall verwende ich GWT, das mich dazu zwingt, seine Fernanrufmethoden zu verwenden. Vielen Dank für Ihre Hilfe. –

0

chk Daten dieser API verwandte Blog-Seite

http://blog.amcharts.com/2011/03/amcharts-javascript-tutorials-part-2.html 

Ich denke, das Tutorial erzählt über alle Nitty gritties die Daten in diesem API Umgang mit vielen Beispielen und Code-Schnipsel

0

die Lösung ist einfach:

var Chartdata = eval (json_data);

Mit freundlichen Grüßen

Verwandte Themen