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

2024-03-21

我有以下 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(使用前将#替换为@)

如何根据Json反序列化JArray数据创建DataTable? 的相关文章

随机推荐

  • “FormData”仅在 IE 中未定义

    我有一个问题 我需要将数据发布为内容类型application x www form urlencoded var inputData cId 444 pageNo 1 latitude 49 153236 longitude 12 040
  • ActiveRecord find_all_by_X 是否保留顺序?如果不是,应该用什么来代替?

    假设我有一个非空数组ids of Thing对象 ID 我想使用查找相应的对象things Thing find all by id ids 我的印象是things不一定有类似于的顺序ids 我的印象正确吗 如果是这样 我可以用什么来代替f
  • Cassandra 物化视图影响

    想知道 mv 对基表的影响 它会减慢基表的速度吗 它什么时候开始写入 mv 就像同时写入基表和 mv 一样 如果我有 local quorum 的 CL 且 RF 3 客户端是否必须等到写入 mv 才能获得 ack 基表和 mv 涉及哪种类
  • tailwindcss 排版“SassC::SyntaxError:错误:类型的未终止属性选择器”

    我升级了tailwindcss railsgem 并在编译生产资源时出现此错误 bundle exec rails assets precompile rails aborted SassC SyntaxError Error unterm
  • rbenv 不断生成 vagrant shim

    我正在使用最新的 vagrant 和 rbenv 和各种红宝石 我正在使用最新的 vagrant 它不再使用 gem 当我执行 vagrant 命令时 我看到以下错误 rbenv vagrant command not found 我已经从
  • 使用命名空间两次

    在 C 中可以两次包含相同的名称空间吗 编译器不会给出任何错误 但无论如何它仍然会产生影响 Thanks EDIT I meant using namespace std STUFF using namespace std 这取决于您所说的
  • 在 Symfony 1.4.8 中显示图像时出错

    注意 很难决定这是否属于此处或 ServerFault 但这似乎是一个编程问题 因此如果它不合适 请随意迁移它 我下载了 Symfony 1 4 8 的沙箱并将文件复制到我的网络服务器 不幸的是 当我尝试访问时 symfony sf san
  • 如何使节点child_process连续执行

    How to exec连续地 例如ls after cd I tried exec require child process exec exec cd function exec ls function err stdout stderr
  • 安全页面上 iframe 中的不安全内容

    我正在为客户端开发一个应用程序 该应用程序将具有 SSL 证书并在 https 下提供服务 然而 为了与现有网站集成 他们希望在 iframe 内提供导航 我可以看到这会造成麻烦 因为我希望浏览器会抱怨页面上混合了安全和不安全的内容 我在这
  • array_combine 只返回最后一个值

    我有两个不同的array for foreach loop所以我决定将它们结合起来并运行到foreach loop在一起 但它只返回数组的最后一个值 数组1 FileType Array 0 gt image png 1 gt image
  • 依赖于失败的 Gradle 任务

    一个 Gradle 任务可以依赖于另一个任务的失败吗 例如 我有一个辅助任务 在浏览器中打开测试报告 我希望报告仅在任务 测试 失败时出现 而不是像现在一样在所有测试都通过时出现 task viewTestReport dependsOn
  • ShadowProperties 在创建之前由 foreach 访问

    我是实体框架新手 正在通过 Julie Lerman 的 Pluralsight 课程学习 ATM 我正在看第二课 实体框架核心 2 映射 https app pluralsight com library courses e f core
  • Python:解析 XML 文档同时保留实体

    我想问有哪些已知的现有 Python 2 x 库可用于使用内置 DTD 解析 XML 文档without自动扩展实体 对于那些好奇的人来说有问题的文件 JMdict ftp ftp monash edu au pub nihongo JMd
  • 将画布对象保存为 json

    我将如何序列化画布对象 如下所示 context beginPath context rect 188 50 200 100 context fillStyle yellow context fill context lineWidth 7
  • ConditionalAttribute 和其他特殊类

    The ConditionalAttribute可用于根据定义的编译器符号删除对标记方法的调用 我假设我们无法自己创建此类 因为编译器必须专门寻找它 我想知道编译器或语言使用的其他类是我们无法自己编写的 除了提到的那些之外 Attribut
  • puppeteer 通过启用 cookie 和 Javascript 绕过 cloudflare

    仅在 NodeJs gt 服务器端 我正在做一些网页抓取 一些页面受到 cloudflare anti ddos 页面的保护 我正在尝试绕过此页面 通过搜索 我发现了很多关于隐身方法或 reCapcha 的文章 但问题是 cloudflar
  • 如何从根 Angular 对象获取 $rootElement

    我的目标是找到任意 Angular 项目中的根元素 如果我所拥有的只是angular目的 这显然不太合规 所以一个破解的解决方案就可以了 我的第一个方法是find ng app 但这在引导应用程序上失败 我一直在尝试各种角度模块 但陷入了僵
  • MongoDB 如何查找哪个多边形包含指定点?

    我将许多多边形插入MongoDB 2 4 8 并希望找到指定点所在的多边形 这似乎是一个常见问题 但在阅读了谷歌的所有文档后 我没有得到结果 所以提出这个问题 e g db addr poly insert loc type Polygon
  • 我们可以在 标签内添加

    当我在锚标记内编写 html 代码时 我的 Dreamweaver 编辑器在锚标记中显示错误 不应该使用内部标签吗 编写 使用标签有什么规则吗 我正在使用 Html 5 这是我的代码 http jsfiddle net CfPnj http
  • 如何根据Json反序列化JArray数据创建DataTable?

    我有以下 JArray 数据 我需要根据 Jarray 中的列名动态创建一个数据表 然后我需要插入数据 你能帮我做这个手术吗 pre PID 3 FirstName parveen LastName a Gender male PID 8