2012-04-11 11 views
0

私は、入力が何らかのフォーマットのように見えるようにする必要のあるチャートライブラリを使用しています。このフォーマットはJSONのように見えるが、それはないが、ここで私はフォーマットに関するアイデアを得るためにいくつかのデータを共有する:データをJSONのような形式にフォーマットする

[{ 
        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 
       }]; 

あなたはthis linkに完全な例を見ることができます。 私の最初のテストでは、String.concat(anotherString)を使用しましたが、快適ではないことを私は保証します。では、この形式を提供するjava APIはありますか? ありがとうございます。

+0

これは、私がJSONを受け入れるほどのJSONに近いほどです。その無効なJSONを作る唯一のことは、キー名の前後に引用符がないことです。 – Corbin

+0

JSONとは対照的に、JavaScriptのように見えます。それが正しいとすれば、JSONを代わりに使用でき、すべてがうまく動作するはずです。 –

+1

キー名の引用符がないのは、Javascriptのものです。これは、javascriptの例から直接取られています。 **このフォーマットが必要な場合は、jsonフォーマッタを使用してjsonString.replace( "\" "、" ")を実行してください。 – Joel

答えて

1

このフォーマットとJSONとの唯一の違いは、文字列から二重引用符を削除する必要があるように見えます。

実際には、この例を読むと、有効なJSONを受け入れることになります。$ .ajax()メソッドを使用してみてください。次のようになります。

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"); 
      }); 
     } 
    }); 

(申し訳ありませんが、私ははるかにJavaScriptを書くのが得意であることからだけど、私はアイデアがあると思います)また、多分amChartsのAPIは、あなたが直接使う地元のURLを確認することができます。そして、JSONデータをREST呼び出しとしてルーティングするだけで済みます。

+0

申し訳ありません@zmo、しかし、$ .ajax()メソッドの意味は分かりませんか? –

+0

さて、jqueryの$ .ajax()メソッド呼び出しを使用して、クライアントエンドポイントのjavascriptサービスから一部のサーバーのJSONデータをダウンロードおよび逆シリアル化することができます。唯一のことは、JavaScriptコードが非常に醜い傾向があることです(イホ):) – zmo

+0

OK私はポイントを得ました。クライアントサイドでネイティブJavaScriptを使用していたのであれば、これは良い考えですが、私の場合はGWTを使用しているので、リモート呼び出しメソッドを使用する必要があります。ご協力いただきありがとうございます。 –

0

chkこのAPIのデータに関連したブログページ

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

私はこのチュートリアルでは、解決策は単純です

0

スニペット例やコードの多くと、このAPIでデータを処理に関するすべての核心grittiesを告げると思う:

VAR chartData =のeval(json_data)。

よろしくお願いします。

関連する問題