c# - how to create the datatable based on the Json deserialized JArray Data? -
i have fallowing jarray info . need create datatable dynamically based on column names in jarray after need insert data.
can please help me operation.
<pre> {[ { "pid": 3, "firstname": "parveen", "lastname": "a", "gender": "male" }, { "pid": 8, "firstname": "ramarao", "lastname": "m", "gender": "male" } ]} </pre> thanks in advance
purna
your json input not valid. should remove first , lastly brackets, since array, not object. if know row type should utilize 1 of existing json libraries, , deserialize array typed list. if don't know type, utilize todatatable method.
i used next library in example:
http://james.newtonking.com/json
private static void main(string[] args) { var info = "[{\"pid\": 3,\"firstname\": \"parveen\",\"lastname\": \"a\",\"gender\": \"male\"},{\"pid\": 8,\"firstname\": \"ramarao\",\"lastname\": \"m\",\"gender\": \"male\"}]"; var dattable = todatatable(data); var list = tolist(data); } class user { public int pid { get; set; } public string firstname { get; set; } public string lastname { get; set; } public string gender { get; set; } } private static list<user> tolist(string json) { homecoming newtonsoft.json.jsonconvert.deserializeobject<list<user>>(json); } private static datatable todatatable(string json) { var result = new datatable(); var jarray = jarray.parse(json); //initialize columns, if know row type, replace foreach (var row in jarray) { foreach (var jtoken in row) { var jproperty = jtoken jproperty; if (jproperty == null) continue; if (result.columns[jproperty.name] == null) result.columns.add(jproperty.name,typeof(string)); } } foreach (var row in jarray) { var datarow = result.newrow(); foreach (var jtoken in row) { var jproperty = jtoken jproperty; if (jproperty == null) continue; datarow[jproperty.name] = jproperty.value.tostring(); } result.rows.add(datarow); } homecoming result; } c# json
No comments:
Post a Comment