美文网首页工作生活
Newstonsoft.Json 使用之Json转DataTab

Newstonsoft.Json 使用之Json转DataTab

作者: Memoyu | 来源:发表于2019-07-04 23:13 被阅读0次

    认知尚浅,如有错误,愿闻其详!

    概述

      在公司项目中,为了项目分工更明确,采用前后端分离的形式开发,后端为.NET WebAPI开发,前端Winform的展示数据与需要增删查改,主要是通过对API的访问数据交互。而现行的API数据传输大多都是通过JSON、XML等进行数据组合,然后传输。所以就要对数据进行序列化与反序列化。
      在今天的问题之前,我都还是很单纯的去对JSON数据进行面向数据模型的解析,将数据直接解析存入对象,然后再存入List,再将其作为数据源,赋值给DataGridView展示出来。听起来就很麻烦!
      下面就记录一下,关于Newstonsoft的一些用法:官方文档例子

    一、数据模型对象转JSON

      序列化对象成JSON很简单,因为Newstonsoft封装的方法,我们甚至没必要去了解内部实现,直接调用即可获得相应的JSON数据,方法如下:

    //将数据模型传入和指定格式
    string json = JsonConvert.SerializeObject(DataModel,Formatting.Indented);
    

    二、JSON转数据模型对象

      反序列化成对应的数据模型对象亦是如此:

    //将目标对象与JSON数据传入,返回目标对象
    DataModel model = JsonConvert.DeserializeObject<DataModel>(json);
    

    三、JSON转DataTable

      Newstonsoft官方文档中介绍中是这样使用的

    string json = @"{
      'Table1': [
        {
          'id': 0,
          'item': 'item 0'
        },
        {
          'id': 1,
          'item': 'item 1'
        }
      ]
    }";
    //首先是先将JSON中的数据反序列化到DataSet中
    DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(json);
    //r然后获取DataSet中指定的表
    DataTable dataTable = dataSet.Tables["Table1"];
    Console.WriteLine(dataTable.Rows.Count);
    // 2
    foreach (DataRow row in dataTable.Rows)
    {
        Console.WriteLine(row["id"] + " - " + row["item"]);
    }
    

    上例中DataSet可以比作一个内存中的数据库,DataTable是一个内存中的数据表,DataSet里可以存储多个DataTable。
    不过我在我的实际项目中使用并没有成功,可能是JSON数据结构的原因,后来直接使用一下方式也可以用:

    //直接将获取到的JSON中的数据反序列化成DataTable中
    DataTabledataSet = JsonConvert.DeserializeObject<DataTable>(json);
    

    最后,再将获取到的DataTable赋值给DataGridView数据源,这样即可显示数据了。

    相关文章

      网友评论

        本文标题:Newstonsoft.Json 使用之Json转DataTab

        本文链接:https://www.haomeiwen.com/subject/szehhctx.html