Десериализация данных json из метода jquery post непосредственно в строковый массив - PullRequest
2 голосов
/ 17 февраля 2012

Есть ли способ десериализации массива, отправленного методом jquery post, непосредственно в массив строк c # (string [])?

Я пытался опубликовать данные, подобные этим

$.post(url,
          {
           'selectedTeams[]'=['Team1','Team2']
          },
          function(response) {}, 'json');

И пыталсяиспользовать его в C # class

string jsonData = new StreamReader(context.Request.InputStream).ReadToEnd();
var selectedTeams = new JavaScriptSerializer().Deserialize<string[]>(jsonData);

Это не сработало, и, конечно, не должно, так как в string []

нет свойства selectedTeams []. Мне известно оспособ определить класс примерно так:

class Teams
{
   public string[] SelectedTeams{get;set;}    
}

и затем выполнить десериализацию.

Но я думаю, что это ненужное определение класса, поэтому нет способа напрямую преобразовать jsonмассив в c # строковый массив

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 17 февраля 2012

Разберись!

Использование объекта строкового массива вместо прямого именованного параметра json для передачи по мере того, как данные решили мою проблему

Теперь я пишу вот так

var Ids = new Array();
Ids.push("Team1");
Ids.push("Team2");

$.post(url, JSON.stringify(Ids), function(response) {}, 'json');

И теперь в состоянии десериализовать ответ json непосредственно в строковый массив, как этот

string jsonData = new StreamReader(context.Request.InputStream).ReadToEnd();
var selectedTeams = new JavaScriptSerializer().Deserialize<string[]>(jsonData);

Спасибо !!

1 голос
/ 17 февраля 2012

вы можете разработать свой собственный класс, но я бы посоветовал вам использовать это http://json.codeplex.com/

...