2016-08-24 5 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},]},, поэтому я хочу удалить вторую последнюю ,]}, запятую, чтобы получить правильный формат

"[{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

yes sureeeeeeee – user6628729

+0

Здесь вы можете узнать, как вы можете проверить, есть ли у вас последний элемент в цикле foreach: 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 ' не содержит определения для 'Length' и никакого метода расширения 'Length', принимающего первый аргумент типа 'System.Collections. Generic.List '(вам не хватает директивы using или ссылки на сборку?) – user6628729

+0

Я не уверен, что является альтернативным методом для получения 'list' size/length/count. Может быть, вы можете легко найти его, погубив его. Я просто предложил вам необходимые изменения в вашем фрагменте кода. –

Смежные вопросы