gpt4 book ai didi

c# - 如何根据Json反序列化JArray数据创建DataTable?

转载 作者:行者123 更新时间:2023-12-02 05:09:52 24 4
gpt4 key购买 nike

我有以下 JArray 数据。我需要根据 Jarray 中的列名动态创建一个数据表,然后我需要插入数据。

你能帮我做这个操作吗?

<pre>

{[
{
"PID": 3,
"FirstName": "parveen",
"LastName": "a",
"Gender": "male"
},
{
"PID": 8,
"FirstName": "ramarao",
"LastName": "M",
"Gender": "male"
}
]}
</pre>

提前致谢

普纳

最佳答案

您的 JSON 输入无效。您应该删除第一个和最后一个括号,因为它是一个数组,而不是一个对象。如果您知道行类型,则应该使用现有的 JSON 库之一,并将数组反序列化为强类型列表。如果您不知道类型,请使用 toDataTable 方法。

我在示例中使用了以下库:

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;
}

关于c# - 如何根据Json反序列化JArray数据创建DataTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24338824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com