2016-08-24 10 views
0

私はJSON括弧コンマforamtting

[ 
    { 
     name: 'Apple', 
     data: [ 
      { name: 'April', y: 35 }, 
      { name: 'June', y: 1 } 
     ] 
    }, 
    { 
     name: 'Orange', 
     data: [ 
      { name: 'April', y: 7 }, 
      { name: 'July', y: 11 }, 
      { name: 'June', y: 7 }, 
      { name: 'May', y: 6 } 
     ] 
    }, 
    { 
     name: 'Mango', 
     data: [ 
      { name: 'July', y: 1 } 
     ] 
    }, 
    { 
     name: 'Grapes', data: [ 
      { name: 'June', y: 1 } 
     ] 
    }, 
    { 
     name: 'Cheery', 
     data: [ 
      { name: 'June', y: 1 } 
     ] 
    } 
]; 

は、だから私は、このコードは形式

var mdata1 = new TrackDataEntities1().spdatasumry(frDate, to_Date, RegNo) 
      .Select(s => new { s.Name }).ToArray().Distinct(); 

foreach (var c in mdata1) { 
    voil.Add(c.Name); 
} 

var sdata = new TrackDataEntities1().spdatasumry(frDate, to_Date, RegNo) 
      .Select(s => new {s.Name,s.Month,s.total }).ToArray(); 

string data2 = "["; 
foreach(string vo in voil) { 
    data2 += "{name:'" + vo + "',"; 
    data2 += "data:["; 

    foreach(string mo in vmonths) { 
     decimal tv = 0; 

     try { 
      tv = sdata.Single(t => t.Month == mo && t.Name == vo).total; 
     } catch { 
      tv = 0; 
     } 

     if (tv > 0) { 
      data2 += "{name:'" + mo + "',y:" + tv + "},"; 
     } 
    } 
    data2 += "]},"; 
} 

data2 = data2.Remove(data2.Length - 1); 
data2 += "]"; 

超えるが以下にこの

ようなコード・ショー形式上必要な取得しようと、このフォーマットを取得しようコードコンマはその部分{name:'June',y:1},]},であり私は正しい形式

を取得するために、第二の最後の ,]},コンマを削除したいです10
"[{name:'Apple',data:[{name:'April',y:35},{name:'June',y:1},]}, 
{name:'Orange',data:[{name:'April',y:7},{name:'July',y:11},{name:'June',y:7},{name:'May',y:6},]}, 
{name:'Mango',data:[{name:'July',y:1},]}, 
{name:'Grapes',data:[{name:'June',y:1},]}, 
{name:'Cheery',data:[{name:'June',y:1},]}]" 
+0

タグを更新してハイチャートを削除できますか? –

+0

はいあなたは、foreachループの最後の要素を持っているかどうかをチェックすることができますどのように情報を見つけることができますsureeeeeeeeここ – user6628729

+0

:http://stackoverflow.com/questions/1070244/how-to-determine-the-first-and-last-iteration- in-a-foreach-loopでは、最後に追加された文字列を変更することができます。もう一度data2 = data2.Remove(data2.Length - 1)を使用することもできます。あなたのデータに "]"括弧を追加する直前です。 –

答えて

0

あなたは間違っている各ノードで、余分なコンマを追加しています。最後のノードで次のようなカンマを追加する必要はありません。

var i = 0; 
foreach(string vo in voil) { 
    data2 += "{name:'" + vo + "',"; 
    data2 += "data:["; 

    var j = 0; 
    foreach(string mo in vmonths) { 
     decimal tv = 0; 

     try { 
      tv = sdata.Single(t => t.Month == mo && t.Name == vo).total; 
     } catch { 
      tv = 0; 
     } 

     if (tv > 0) { 
      j++; 
      if(vmonths.Length == j){ 
       data2 += "{name:'" + mo + "',y:" + tv + "}"; 
      }else{ 
       data2 += "{name:'" + mo + "',y:" + tv + "},"; 
      } 
     } 
    } 
    i++; 

    if(voil.Length == i){ 
     data2 += "]}"; 
    }else{ 
     data2 += "]},"; 
    } 
} 
+0

長さでこのショーのエラー...エラーは「System.Collections.Generic.List 」「長さ」と型「にSystem.Collectionsの最初の引数を受け入れていない拡張メソッド「長さ」の定義が含まれていません。 Generic.List は、 '(あなたがusingディレクティブまたはアセンブリ参照が不足している?)が見つかりませんでした – user6628729

+0

私は 'list'サイズ/長さ/数を取得するための別の方法が何であるかわかりません。グーグルで簡単に見つけることができるかもしれません。私はあなたのコードに必要な変更を提案しました。 –