我有以下 JArray 数据。我需要根据 Jarray 中的列名动态创建一个数据表,然后我需要插入数据。
你能帮我做这个手术吗?
<pre>
{[
{
"PID": 3,
"FirstName": "parveen",
"LastName": "a",
"Gender": "male"
},
{
"PID": 8,
"FirstName": "ramarao",
"LastName": "M",
"Gender": "male"
}
]}
</pre>
提前致谢
purna
您的 JSON 输入无效。您应该删除第一个和最后一个括号,因为它是一个数组,而不是一个对象。如果您知道行类型,则应该使用现有的 JSON 库之一,并将数组反序列化为强类型列表。如果您不知道类型,请使用 toDataTable 方法。
我在示例中使用了以下库:
http://james.newtonking.com/json http://james.newtonking.com/json
private static void Main(string[] args)
{
var data =
"[{\"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)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<List<User>>(json);
}
private static DataTable toDataTable(string json)
{
var result = new DataTable();
var jArray = JArray.Parse(json);
//Initialize the columns, If you know the row type, replace this
foreach (var row in jArray)
{
foreach (var jToken in row)
{
var jproperty = jToken as 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 as JProperty;
if (jProperty == null) continue;
datarow[jProperty.Name] = jProperty.Value.ToString();
}
result.Rows.Add(datarow);
}
return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)