2016-09-13 6 views
0

Я получил результат json следующим образом.json string to datatable

{ 
    "HTTPStatusCode":"200", 
    "objFeedBackManagmentViewModel":[ 
     { 
     "ID":2, 
     "FeedBackDetail":"Email :[email protected] Mobile :9503628985 Category :Product Request Message :lookingFor", 
     "CreateDate":"2015-09-04T13:42:45" 
     }, 
     { 
     "ID":3, 
     "FeedBackDetail":"Email :[email protected] Mobile :9503507124 Category :Product Request Message :lookingFor", 
     "CreateDate":"2015-09-04T18:06:44" 
     } 
    ] 
} 

как преобразовать его в DataTable

+0

Возможный дубликат [Как преобразовать json в datatable?] (Http://stackoverflow.com/questions/7641004/how-to-convert-json-into-datatable) Также: http://stackoverflow.com/q/11981282/1070452 – Plutonix

+0

Не строгое дублирование, так как этому JSON понадобится дочерняя таблица для переноса объектов в objFeedBackManagmentViewModel. Вам понадобится DataSet? –

ответ

-3

я понятия не имею, как работать с Json

вы можете попробовать

foreach(element ele in JsonNodeList) 
{ 
} 

у меня есть только опыт XML, хотя

Я также нашел это, это может помочь вам Convert JSON to DataTable

0

Требовать Dll Refernce от Json.Net

using Newtonsoft.Json; 
var table = JsonConvert.DeserializeObject<DataTable>(jsonString); 
0

Я предполагаю, что вы пытаетесь преобразовать objFeedBackManagmentViewModel модель в DataTable. Правильно?

Итак, если вы следуете this, отправьте сообщение по адресу @Plutonix, вы получите ответ.

В заключение:

1) Во-первых, десериализации JSON с помощью некоторых соответствующих классов:

public class OKStatus{ 
    public int HTTPStatusCode {get; set;} 
    public FeedBack[] objFeedBackManagmentViewModel {get; set;} 
} 

public class FeedBack{ 
    public int ID {get; set;} 
    public string FeedBackDetail {get; set;} 
    public DateTime CreateDate {get; set;}  
} 

2) Затем поместите метод, который @Pravin Павар корректно, представленную в пост внутри static class как это :

public static class ExtensionMethods{ 
    public static DataTable ToDataTable<T>(this IList<T> data) 
    { 
     PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T)); 

     DataTable table = new DataTable(); 

     for(int i = 0 ; i < props.Count ; i++) 
     { 
      PropertyDescriptor prop = props[i]; 
      table.Columns.Add(prop.Name, prop.PropertyType); 
     } 

     object[] values = new object[props.Count]; 

     foreach (T item in data) 
     { 
      for (int i = 0; i < values.Length; i++) 
      { 
       values[i] = props[i].GetValue(item); 
      } 

      table.Rows.Add(values); 
     } 

     return table;   
    } 
} 

3) Вызвать метод :)

var json = "{\"HTTPStatusCode\":\"200\",\"objFeedBackManagmentViewModel\":[{\"ID\":2,\"FeedBackDetail\":\"Email :[email protected] Mobile :9503628985 Category :Product Request Message :lookingFor\",\"CreateDate\":\"2015-09-04T13:42:45\"}]}"; 

var result = JsonConvert.DeserializeObject<OKStatus>(json); 

var table = result.objFeedBackManagmentViewModel.ToDataTable(); 

//table contains the datatable of the feedback model