文章目录

  • 前言
  • 一、利用Spit字符分隔的方式解释Json
    • 1.步骤
    • 2.例子
  • 二、利用反序列化公式转化【JavaScriptSerializer】
    • 1.步骤
    • 2.例子
  • 总结

前言

初接触Json类型数据,习惯用DataTable处理数据,因此想要将Json数据转化为datatable格式的数据。


一、利用Spit字符分隔的方式解释Json

1.步骤

  1. 引用库:【system.web.extension】;
  2. 定义分隔符格式: Dim JsonChar As Char =【json数据格式分隔符】;
  3. 定义字符串数组: Dim JsonStr As String()
  4. 建新的Table数据表: Dim JsonTable as DataTable=New DataTable();
  5. 加入Table的Column表头,利用【spit】分隔字符获取,并写入DataTable;
  6. 循环将解释的Json数据写入datatable;

2.例子

  • 已获取字符串:

{“service”:“QREELQTY”,“msgcode”:0,“msg”:null,“strdata”:[{“mc”:“SM2104AB-1”,“mo”:1,“stage”:1,“slot”:12,“pn”:“201-018404-0222”,“did”:“LD000000000022994093”,“qty”:12,“fid”:“KT8FL 455125”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:4,“stage”:1,“slot”:10,“pn”:“301-030622-2492”,“did”:“LD000000000022939266”,“qty”:22,“fid”:“KT8FL 331810”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:3,“stage”:1,“slot”:10,“pn”:“301-030622-5102”,“did”:“LD000000000022949755”,“qty”:85,“fid”:“KT8FL 331801”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:7,“stage”:1,“slot”:11,“pn”:“440-900009-04R0”,“did”:“LD000000000022683192”,“qty”:85,“fid”:“KT8FL 332733”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:11,“pn”:“301-900058-10R0”,“did”:“LD000000000022948432”,“qty”:170,“fid”:“KT8FL 452899”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:9,“pn”:“301-030622-8202”,“did”:“LD000000000022947701”,“qty”:170,“fid”:“KT8FL 455160”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:12,“pn”:“131-005213-0000”,“did”:“LD000000000022861683”,“qty”:170,“fid”:“KT8FL 332724”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:6,“stage”:1,“slot”:10,“pn”:“301-030596-05R1”,“did”:“LDVFHDH2020082200059”,“qty”:170,“fid”:“KT8FL 331847”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:1,“stage”:1,“slot”:10,“pn”:“101-005181-06R2”,“did”:“LDVYJBA0092007132067”,“qty”:225,“fid”:“KT8FL 331915”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:12,“pn”:“131-005213-0000”,“did”:“LD000000000022861688”,“qty”:307,“fid”:“KT8FL 452850”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:8,“stage”:1,“slot”:12,“pn”:“466-900013-0000”,“did”:“LD000000000022970377”,“qty”:324,“fid”:“KT16F 040227”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:9,“pn”:“301-030622-8202”,“did”:“LD000000000022965778”,“qty”:798,“fid”:“KT8FL 455027”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:9,“stage”:1,“slot”:23,“pn”:“201-900093-0680”,“did”:“LDVCAPHW202007210002”,“qty”:798,“fid”:“KT12F 028230”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:6,“stage”:1,“slot”:10,“pn”:“301-030596-05R1”,“did”:“LDVFHDH2020082900053”,“qty”:1108,“fid”:“KT8FL 332795”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:5,“stage”:1,“slot”:12,“pn”:“301-900057-R025”,“did”:“LDVTA202007160000685”,“qty”:1208,“fid”:“KT8FL 452952”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:8,“stage”:1,“slot”:11,“pn”:“121-900030-0000”,“did”:“LD000000000022994199”,“qty”:1357,“fid”:“KT12F 028245”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:3,“stage”:1,“slot”:10,“pn”:“301-030622-5102”,“did”:“LD000000000022966007”,“qty”:1496,“fid”:“KT8FL 737007”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:4,“stage”:1,“slot”:10,“pn”:“301-030622-2492”,“did”:“LD000000000022965999”,“qty”:1998,“fid”:“KT8FL 331858”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:7,“stage”:1,“slot”:10,“pn”:“201-020052-0105”,“did”:“LD000000000022995502”,“qty”:2237,“fid”:“KT8FL 331912”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:1,“stage”:1,“slot”:11,“pn”:“201-020170-0104”,“did”:“LD000000000022994277”,“qty”:2605,“fid”:“KT8FL 455165”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:7,“stage”:1,“slot”:11,“pn”:“440-900009-04R0”,“did”:“LDVBT201011000017430”,“qty”:2608,“fid”:“KT8FL 455123”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:4,“stage”:1,“slot”:12,“pn”:“201-900022-0471”,“did”:“LD000000000022995506”,“qty”:2778,“fid”:“KT8FL 996740”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:6,“stage”:1,“slot”:11,“pn”:“201-018964-0105”,“did”:“LD000000000022995530”,“qty”:2908,“fid”:“KT8FL 360042”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:10,“pn”:“301-900059-8R25”,“did”:“LDVTA202008280000014”,“qty”:2950,“fid”:“KT8FL 331874”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:12,“pn”:“131-005213-0000”,“did”:“LD000000000022861692”,“qty”:2998,“fid”:“KT8FL 455194”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:1,“stage”:1,“slot”:12,“pn”:“201-018404-0222”,“did”:“LD000000000022995512”,“qty”:3178,“fid”:“KT8FL 455004”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:5,“stage”:1,“slot”:12,“pn”:“301-900057-R025”,“did”:“LDVTA202007160000684”,“qty”:3298,“fid”:“KT8FL 729575”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:2,“stage”:1,“slot”:11,“pn”:“301-900058-10R0”,“did”:“LDVYAG20101300000699”,“qty”:3450,“fid”:“KT8FL 455024”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:6,“stage”:1,“slot”:10,“pn”:“301-030596-05R1”,“did”:“LDVFHDH2020092700087”,“qty”:3498,“fid”:“KT8FL 331924”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:3,“stage”:1,“slot”:11,“pn”:“161-000705-0000”,“did”:“LDVXHD20101400000010”,“qty”:3850,“fid”:“KT8FL 455159”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:1,“stage”:1,“slot”:11,“pn”:“201-020170-0104”,“did”:“LD000000000022994353”,“qty”:3900,“fid”:“KT8FL 360065”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:5,“stage”:1,“slot”:10,“pn”:“301-030622-2202”,“did”:“LD000000000022948125”,“qty”:4160,“fid”:“KT8FL 332601”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:5,“stage”:1,“slot”:11,“pn”:“301-900053-6201”,“did”:“LDVYAG20101300000644”,“qty”:5900,“fid”:“KT8FL 331962”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:6,“stage”:1,“slot”:11,“pn”:“201-018964-0105”,“did”:“LD000000000022994732”,“qty”:6587,“fid”:“KT8FL 332690”,“status”:“2”},{“mc”:“SM2104AB-1”,“mo”:5,“stage”:1,“slot”:10,“pn”:“301-030622-2202”,“did”:“LDVXHD20101500000015”,“qty”:7998,“fid”:“KT8FL 996979”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:4,“stage”:1,“slot”:11,“pn”:“201-018959-0104”,“did”:“LD000000000022995508”,“qty”:9461,“fid”:“KT8FL 452811”,“status”:“1”},{“mc”:“SM2104AB-1”,“mo”:5,“stage”:1,“slot”:11,“pn”:“301-900053-6201”,“did”:“LDVYAG20092300000976”,“qty”:12224,“fid”:“KT8FL 994066”,“status”:“2”}]}

Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json
Imports System.Web.Script.Serialization
Public Function JasonToDataTable(Jason As String) As DataTableTry'定义分隔符格式Dim rowf As Char = "{"Dim Str As Char = ","Dim StrC As Char = """"'定义字符串数组Dim rowStr As String()Dim ColStr As String()JasonToDataTable = New DataTablerowStr = Jason.Split(rowf) '分行ColStr = rowStr(2).Split(Str)'加入DataTable列名For i = 0 To ColStr.Length - 2Dim ColName As String()ColName = ColStr(i).Split(StrC)JasonToDataTable.Columns.Add(ColName(1))NextDim EachColunm As String()Dim EachStr As String()Dim EachValue(ColStr.Length) As String'加入Json数据For j = 0 To rowStr.Length - 3JasonToDataTable.Rows.Add()EachColunm = rowStr(j + 2).Split(",")For k = 0 To EachColunm.Length - 1If EachColunm(k).Length > 1 ThenEachStr = EachColunm(k).Split(":")EachValue(k) = EachStr(1).Replace("}", "").Replace("]", "").Replace("""", "")JasonToDataTable.Rows(j).Item(k) = EachValue(k)End IfNextNextReturn JasonToDataTableCatch ex As ExceptionWarmTXT.Visible = TrueWarmTXT.Text = "Json数据转换出错!"End TryEnd Function

二、利用反序列化公式转化【JavaScriptSerializer】

1.步骤

  1. 安装【Nugen】解决方案插件;
  2. 读出Json数据;
  3. 用JavaScriptSerializer排列Json数据;
  4. 使用循环语句将Json数据列名、数据导入新建的DT;

2.例子

Public Function JsonToDataSet(Json As String) As DataSetTryDim ds = New DataSet()Dim JSS = New JavaScriptSerializer()Dim obj As Object = JSS.DeserializeObject(Json)Dim datajson As Dictionary(Of String, Object)datajson = objFor Each item In datajsonDim dt = New DataTable("JsonDT")Dim rows As Object = item.ValueIf item.Key <> "strdata" Then Continue ForFor Each row In rowsDim val As Dictionary(Of String, Object)val = rowDim dr As DataRow = dt.NewRow()Dim sss As KeyValuePair(Of String, Object)For Each sss In valIf dt.Columns.Contains(sss.Key) = True Thendr(sss.Key) = sss.ValueElsedt.Columns.Add(sss.Key)dr(sss.Key) = sss.ValueEnd IfNextdt.Rows.Add(dr)Nextds.Tables.Add(dt)NextReturn dsCatch ex As ExceptionEnd TryReturn NothingEnd Function

总结

以上两种方法都可将Json数据转化为DataTable数据,总体上说没有差别。

方法一:比较适合Json数据包简单,而且永不会变化的数据类型格式;

方法二:普遍通用使用于所有Json数据转化为DataTable类型数据格式。

Json数据转化为DataTable的两种方法(vb.net)相关推荐

  1. 画板数据保存成文件的两种方法小结

    前面我学习了绘制画板以及画板的重绘,最近学习将画板数据保存成文件,与大家分享下.关于画板的保存有两种方式.先说说用队列来保存文件吧:首先需要将重绘时用来保存对象的队列按我们定义的文件格式写入文件: / ...

  2. Layui数据表格隔行变色的两种方法

    开发工具与关键技术:MVC 作者:Mr_恺 撰写时间:2019年7月17日 Layui数据表格隔行变色,第一种的就是layui插件里有一个自带的方法:   even这个属性把它设置为:true,就开启 ...

  3. iOS开发小技巧--边接受数据边写入文件的两种方法

    一.NSFileHanle 使用注意点:在往文件写入数据时,必须创建一个空的文件 指定文件写入的方式 -- 覆盖还是追加 最后记得关闭 <1>代码是在大文件传输的练习中截取的.写入数据之前 ...

  4. excel单元格内容拆分_Excel中把一个单元格内容拆分到多个单元格内的两种方法...

    ​利用时间是一个极其高级的规律.--恩格斯 今天给大家分享的是关于数据拆分的小技巧,什么意思呢? 就比如下面的表格,我想把图一的表转换为图二的表,这个要如何做呢? 今天给大家分享2种方法实现它. 方法 ...

  5. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  6. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  7. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  8. java构建json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  9. swift:使用NSJSONSerialization和SwiftyJSON两种方法解析网络返回的json格式数据

    在我的博客(下面)两个实验的基础上,使用NSJSONSerialization和SwiftyJSON两种方法解析网络返回的json格式数据,参照视频实现的"天气信息"小实验 1 创 ...

  10. 通达信交易接口api_股票量化交易-获取数据的两种方法

    量化交易第一步就是获取数据,介绍两种免费的方法 1.通过pytdx获取本地通达信数据 2.通过requests爬虫爬取腾讯财经数据 通过python第三方库pytdx获取 这是个很强大的第三方库,原理 ...

最新文章

  1. android 取色器_老板夸我PPT配色高级,以为我学过设计,其实我都是从Logo取色
  2. 关于文件透明加密解密
  3. 全国计算机等级考试题库二级C操作题100套(第58套)
  4. XReport报表工具技术白皮书
  5. SQLi LABS Less 25 联合注入+报错注入+布尔盲注
  6. k8s springboot 文件_30分钟无痛上云——springboot项目部署到kubernetes
  7. 大学计算机导学,大学计算机一级--导学.ppt
  8. java开发手册 - 码出规范 - 要点整理
  9. 以太坊搭建私链(4)——新建账户、查看账户信息、转账、挖矿、添加节点等操作
  10. 客房管理系统java代码_java客房管理系统代码
  11. Ubuntu释放缓存/内存和显存
  12. RGB与YCbCr颜色空间的转换
  13. android pdf编辑,PDF Reader Pro 功能强大的 PDF 阅读编辑器
  14. MSYS 1.0.11 + MinGW安装方法
  15. Leetcode初学——跳跃游戏
  16. 表格数据处理软件,除了Excel还有什么?
  17. 【初学python】:输入秒数,输出对应小时/分钟/秒
  18. 基于遗传算法的大规模工程优化设计方法初探
  19. C#中的委托和事件(分分钟上手)
  20. mysql中checktable语句来_MySQL的命令check table用法

热门文章

  1. 推荐Go语言开源项目:Excelize ,获取阿里云ECS实例监控数据导出到自定义Excel表格(二)
  2. 一个Lua脚本的解密过程
  3. #边学边记 必修4 高项:对事的管理 第六章 项目质量管理 质量管理基础
  4. matlab uicontrol 居中,在uicontrol属性中position设置问题?
  5. Tracepro 中LED光源模型建立(英文
  6. 8187L芯片真的比雷凌3070芯片好吗?各有什么特点?
  7. 监控网页变化,实时推送微信消息
  8. Eclipse使用教程(图文详解)+ 2020版eclipse配置tomcat + 配置JDK
  9. php ip纯真数据库Dat,php读取纯真ip数据库使用示例
  10. WPF--->Stylet将TextBox修改为圆角