2014-12-26 7 views
1

Я настроил тестовый сервер DreamFactory, и я пытаюсь преобразовать результаты из JSON в DataTable, чтобы я мог отображать GridView. Я пытался несколько вещей, но безуспешно, это мой текущий код:Преобразование JSON в GridView

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
      { 
       result = streamReader.ReadToEnd(); 
       dynamic d = JObject.Parse(result); 
      } 

      object obj = JsonConvert.DeserializeObject(result); 

      var table = JsonConvert.DeserializeObject<DataTable>(result); <--ERROR 
      return table; 

Я пробовал несколько методов, но я получаю следующее сообщение об ошибке большую часть времени:

Неожиданный токен JSON когда это чтение DataTable. Ожидаемый StartArray, получил StartObject. Path '', строка 1, позиция 1.

Это может десериализовать, поскольку объект показывает мне полный десериализованный JSON без проблем. Что я могу сделать?

EDIT: JSON Структура

{"record":[{"StatusID":1, "Identifier":"DQRJO1Q0IQRS", 
"Status":"WaitList", 
"StatusDate":"2014-11-15", 
"WorkedBy":"None", 
"ContactedOn":"2014-11-15T14:21:55.623", 
"Email":"email}]} 
+0

Где вы получите сообщение об ошибке? Вы смешали все свои испытания в одном коде? BTW: «Я пробовал несколько методов, но большую часть времени я получаю следующую ошибку». Когда? С каким кодом? –

+0

Argh жаль, позвольте мне очистить это (я прокомментировал их, но все же) –

+0

Какова структура JSON? – Avijit

ответ

2

Ваш json не является DataTable. Все, что вам нужно, это десериализации в

var root = JsonConvert.DeserializeObject<RootObject>(result); 

public class Record 
{ 
    public int StatusID { get; set; } 
    public string Identifier { get; set; } 
    public string Status { get; set; } 
    public string StatusDate { get; set; } 
    public string WorkedBy { get; set; } 
    public string ContactedOn { get; set; } 
    public string Email { get; set; } 
} 

public class RootObject 
{ 
    public List<Record> Record { get; set; } 
} 

См this site для дальнейшей JSON в Csharp convertions

+0

Хорошо, что казалось очень хорошо, спасибо много. Я проверил список, и данные были десериализованы правильно. Если вы не возражаете, как я могу превратить «корень» в DataTable? –

+0

@LordRelix Создайте таблицу данных и заполните значения с помощью корневого объекта. Это не связано с десериализацией json. –

+0

Вы правы. По-прежнему он работал после некоторого возиться. Большое спасибо :) –

0

На самом деле вам не нужно, чтобы преобразовать его в DataTable. Он должен работать при преобразовании к строго типизированному объекту. Вполне уверен, что он не будет работать с динамикой, хотя. и привязать его к объекту результата, источником данных должен быть массив.

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