2013-04-03 6 views
0

Требование - это данные, которые нужно вытащить через JSON и передать на график. данных должны быть INT формеjavascript: json data parsing

вар DataArray = [{данные: []}, {данные: []}];

Код для получения данных в формате JSON на стороне клиента, как показано ниже:

$.ajax({ 
        type: "POST", 
        url: "Default.aspx/SendJsonUpadtes", 
        data: "{}", 
        contentType: "application/json", 
        dataType: "json", 
        success: function (msg) { 
         $("#Result").text(msg.d); 
         alert(msg.d); 
        } 
       }); 

Asp.net ServerSide код:

[WebMethod(EnableSession = false)] 
    public static string SendJsonUpadtes() 
    { 
     return JSONFromCSV(); 

    } 

    public static string JSONFromCSV() 
    { 
     //var reader = new StreamReader(File.OpenRead(@"D:\logs\data.csv")); 
     var lines = File.ReadAllLines(@"D:\logs\electricity\data.csv"); 
     object[,] data = new object[lines.Count(), 2]; 
     int i = 0; 
     string jsonStr = "["; 
     lines.ToList().ForEach(line => 
     { 
      jsonStr += "["+line+"]"; 
      i++; 
      if (i < lines.Count()) 
       jsonStr += ","; 
     }); 
     jsonStr += "]"; 
     return jsonStr; 
    } 

данных будет получен в виде строки:

"[[10,20], [20,30], [30,40]]"

Мне нужно разобрать его, чтобы сделать его var dataArray = [{data: []}, {data: []}];

Как я могу это сделать с помощью Javascript или JQuery! Любые другие идеи?

+5

Точно так же, как вы разместили его ... где проблема? Пожалуйста, будьте более конкретными. У меня такое чувство, что это не имеет никакого отношения к разбору JSON. –

+0

отредактирован соответственно – Seenu

+0

Итак, у вас есть JSON-кодированные данные внутри JSON-кодированных данных? Зачем? В идеале 'msg.d' будет просто массивом, а не строкой. Я рекомендую исправить это на стороне сервера. Остальная часть вашего вопроса все еще актуальна. * edit: * uh, не создавайте JSON вручную ... используйте библиотеку для преобразования данных в JSON и пусть она будет преобразована сервером (не знаю, как это работает на этом языке). –

ответ

1

Попробуйте это:

var dataArray = []; 
$.each(msg.d, function(index, value) { 
    dataArray.push({data : value}); 
}); 

DEMO HERE

+0

данные в строчном формате «[[10,20], [20,30], [30,40]]» – Seenu

+1

См. Это будет работать для вас http://jsfiddle.net/Nscy3/4/ –

+0

все еще не работает – Seenu

0

Вы можете использовать функцию map, чтобы изменить свой массив данных.

var data = [[10,20],[20,30],[30,40]]; 

var dataArray = data.map(function(element) { 
          return { "data" : element } 
         });