将json转换为datatable vb [英] Convert json to datatable vb

查看:93
本文介绍了将json转换为datatable vb的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

早上好,今天
我正在尝试将json转换为数据表。

Good morning, today i was trying to convert my json to datatable.

这就是我正在尝试做的事情

This is what i'm trying to do

    Dim webclient_server7 As New System.Net.WebClient
    Dim json_result As String = webclient_server7.DownloadString("http://myhost/api/mycontroller/GetQuery")
    Dim json_jsonstring = Newtonsoft.Json.JsonConvert.SerializeObject(json_result)

    Try
        Dim table As DataTable = JsonConvert.DeserializeObject(Of DataTable)(json_jsonstring)
    Catch ex As Exception
        MsgBox("An exception occured: " & ex.Message)
    End Try

我得到一个异常说:

发生了异常:读取DataTable时出现意外的JSON令牌。应该是StartArray,得到了String。路径,第1行,位置9919。

And i get an exception saying:

An exception occured: Unexpected JSON token when reading DataTable. Expected StartArray, got String. Path '', line 1, position 9919.

我在 json lint 并说我的json有效。
有没有人可以帮助我解决此问题?


这是我的原始json的副本

i validated my json on json lint and it says my json is valid.
Is there anyone who can help me fixing this?

here's a copy of my raw json


{\r\n \ Table\:[\r\n {\r\n \ IdOwner\:\ Davide\,\r\n \ tag_id\:1,\r\n \ tag_type\:\ 3\ ,\r\n \ tag_group\:\ Group_2\,\r\n \ tag_name\:\ Alfa\,\r\ n \ tag_sequence\:123458,\r\n \ tag_description\:\ Description_2\,\r\n \ tag_short_descritpion\:\ Desc_2\,\r\n \ tag_um\:\ kg\,\r\n \ tag_active\:true,\r\n \ tag tag_collecting\:否,\r\n \ tag_data_edit\:\,\r\n \ tag_source_name\:\ Alfaservice\,\r \n tag tag_source_index\:\ Undefined_index\,\r\n \ tag_source_tagtype\:\ Source_tag_type\,\r\n \ tag_source_lenght\:50,\r\n\ tag_collect_frequency\:200,\r\n\ tag_collect_unit\:\ ms\,\ r\n tagtag_low_limit\:100.0,\r\n tagtag_high_limit\:370.0,\r\n tagtag_control_limit_active\\:true,\r\ \n \tag_calc\:\ useless_field\,\r\n \ tag_level\:0,\r\n \ tag_origine_dati\:null\ \r\n},\r\n {\r\n \ IdOwner\:\ Giuseppe\,\r\n \ tag_id\: 3,\r\n \ tag_type\:\ Type_1\,\r\n \ tag_group\:\ Group_2\,\r\ \n \ tag_name\:\ Bemad\,\r\n \ tag_sequence\:123456,\r\n \ tag_description\:\ Description_5\,\r\n \ tag_short_descritpion\:\ Desc_5\,\r\n \ tag_um\:\ Kg\, \r\n \ tag_active\:真,\r\n \ tag_collecting\:假,\r\n \ tag_data_edit\:真,\ r\n \ tag_source_name\:\ Alfaservice\,\r\n \ tag_source_index\:\ Undefined_index\,\r\n \ tag_source_tagtype\:\ Source_tag_type\,\r\n tag tag_source_lenght\:50,\r\n \ tag_collect_frequency\:200,\ r\n \ tag_collect_unit\:\ ms\,\r\n \ tag_low_limit\:250.0,\r\n \ tag_high_limit\: 660.0,\r\n\ tag_control_limit_active\:true,\r\n\ tag_calc\:\ useless_field\,\r\n\ tag_level \:0,\r\n \ tag_origine_dati\:null\r\n},\r\n {\r\n \ IdOwner\: M Madalin\,\r\n \ tag_id\:2,\r\n \ tag_type\:\ Type_2\,\r\ \n \ tag_group\:\ Group_1\,\r\n \ tag_name\:\ Bemad\,\r\n \ tag_sequence \:123456,\r\n \ tag_description\:\ Description_1\,\r\n \ tag_short_descritpion\:\ Desc_1\, \r\n \ tag_um\:\ Kg\,\r\n \ tag_active\:true,\r\n \ tag_collecting\ :false,\r\n \ tag_data_edit\:\,\r\n \ tag_source_name\:\ Alfaservice\,\r\ n \ tag_source_index\:\ Undefined_index\,\r\n \ tag_source_tagtype\:\ Source_tag_type\,\r\n tag_source_lenght\ \:50,\r\n \ tag_collect_frequency\:200,\r\n \ tag_collect_unit\:\ ms\,\r\n \ tag tag_low_limit\:150.0,\r\n \ tag_high_limit\:350.0,\r\n \ tag_control_limit_active\:true,\r\n\ tag_calc\:\ useless_field\,\r\n \ tag_level\:0,\r\n \ tag_origine_dati\:null\r\n },\r\n {\r\n \ IdOwner\:\ test\,\r\n \ tag_id\:6,\r \n\ tag_type\:null,\r\n\ tag_group\:空,\r\n\ tag_name\:\ REW_SAX_BOWED_ActualVelocity\ ,\r\n \ tag_sequence\:0,\r\n \ tag_description\:\ 1\,\r\n \ tag_short_descritpion\ \:\ 1\,\r\n \ tag_um\:空,\r\n \ tag_active\:true,\r\n \ tag tag_collecting\:真,\r\n \ tag_data_edit\:假,\r\n \ tag_so urce_name\:\ REW_SAX_BOWED.ACTUALVELOCITY\,\r\n \ tag_source_index\:\ 0\,\r\n \ tag_source_tagtype\ :\ Float\,\r\n \ tag_source_lenght\:0,\r\n \ tag_collect_frequency\:100,\r\n \ tag_collect_unit\:\ 1\,\r\n \ tag_low_limit\:1.0,\r\n \ tag_high_limit\:1.0,\r\ n \ tag_control_limit_active\:否,\r\n tag tag_calc\:空,\r\n \ tag_level\:0,\r\n \ \ tag_origine_dati\:null\r\n},\r\n {\r\n \ IdOwner\:\ test\,\r\ n \ tag_id\:7,\r\n \ tag_type\:空,\r\n \ tag_group\:空,\r\n \ \ tag_name\:\ REW_SAX_BOWED_ActualVelocity\,\r\n \ tag_sequence\:0,\r\n \ tag_description\:\ 1\ \,\r\n \ tag_short_descritpion\:\ 1\,\r\n \ tag_um\:null,\r\n \ tag_active\:true,\r\n \ tag_collecting\:true,\r\n tag tag_data_edit\:false,\r\n tag tag_source_name\:\ REW_SAX_BOWED.ACTUALVELOCITY\,\r\n tag tag_source_index\:\ 0\,\r\n \ tag_source_tagtype \:\ Float\,\r\n \ tag_source_lenght\:0,\r\n \ tag_collect_frequency\:100,\r\n \ tag_collect_unit\:\ 1\,\r\n \ tag_low_limit\:1.0,\r\n \ tag_high_limit\:1.0,\ r\n \ tag_control_limit_active\:否,\r\n \ tag_calc\:空,\r\n \ tag_level\:0,\r\ tagn tag tag_origine_dati\:Tag标记名称= REW_SAX_BOWED_ActualVelocity,地址= REW_SAX_BOWED.ACTUALVELOCITY,数据类型=浮点,尊重数据类型= 0,客户端访问权限= RO,扫描率= 100,缩放比例,原始低=,原始高电平=,缩放低电平=,缩放高电平=,缩放数据类型=,钳位低电平=,钳位高电平=,英制单位=,描述=,取反值=,\ \r\n},\ \r\n {\r\n \ IdOwner\:\ test\,\r\n \ tag_id\:8,\r\n \ tag_type\:null,\r\n \ tag_group\:null,\r\n\ tag_name\:\ REW_SAX_BOWED_ActualVelocit y\,\r\n \ tag_sequence\:0,\r\n \ tag_description\:\ 1\,\r\n \ tag tag_short_descritpion\:\ 1\,\r\n \ tag_um\:空,\r\n \ tag_active\:true,\r \n\ tag_collecting\:真,\r\n\ tag_data_edit\:假,\r\n\ tag_source_name\:\ REW_SAX_BOWED.ACTUALVELOCITY\ \,\r\n \ tag_source_index\:\ 0\,\r\n \ tag_source_tagtype\:\ Float\,\r \n\ tag_source_lenght\:0,\r\n\ tag_collect_frequency\:100,\r\n\ tag_collect_unit\:\ 1\ , tag_low_limit\:1.0, r_n_tag_high_limit\:1.0, r_n_tag_control_limit_active\:false, \r\n \tag_calc\:null,\r\n \ tag_level\:0,\r\n \ tag_origine_dati\:\标签名= REW_SAX_BOWED_ActualVelocity,地址= REW_SAX_BOWED.ACTUALVELOCITY,数据类型=浮点型,尊重数据类型= 0,客户端访问权限= RO,扫描速率= 100,缩放比例=达特a类型=,钳位低=,钳位高=,英制单位=,描述=,取反值=,\ \r\n},\r\n {\r\n \ IdOwner\:\ test\,\r\n \ tag_id\:9,\r\n \ tag_type\:null,\r\ n \ tag_group\:null,\r\n \ tag_name\:\ REW_SAX_BOWED_ActualVelocity\,\r\n tag_sequence\:0,\ tagr\n \ tag_description\:\ 1\,\r\n \ tag_short_descritpion\:\ 1\,\r\n \ \ tag_um\:null,\r\n \ tag_active\:真,\r\n \ tag_collecting\:真,\r\n \ tag_data_edit\:否,\r\n \ tag_source_name\:\ REW_SAX_BOWED.ACTUALVELOCITY\,\r\n \ tag_source_index\:\ 0\ \,\r\n \ tag_source_tagtype\:\ Float\,\r\n \ tag_source_lenght\:0,\r\n \ tag_collect_frequency\:100,\r\n \ tag_collect_unit\:\ 1\,\r\n\ tag_low_limit\:1.0,\r\ n \tag_high_limit\:1.0,r\n tagtag_control_limit_active\n:假,\rtagtag_cal c\:null,\r\n \ tag_level\:0,\r\n \ tag_origine_dati\:\标记名称= REW_SAX_BOWED_ActualVelocity,地址= REW_SAX_BOWED.ACTUALVELOCITY ,数据类型=浮动,尊重数据类型= 0,客户端访问权限= RO,扫描速率= 100,缩放比例=,原始低位=,原始高位=,缩放低位=,缩放高位=,缩放数据类型=,钳位低=,钳位高=,工程单位=,描述=,取反值=,\ \r\n},\r\n {\r\n \ IdOwner\:\ test\,\r\n \ tag_id\:10,\r\n \ tag_type\:null,\r\n \ tag_group\ :null,\r\n \ tag_name\:\ REW_SAX_BOWED_ActualVelocity\,\r\n \ tag_sequence\:0,\r\n \ tag_description\:\ 1\,\r\n \ tag_short_descritpion\:\ 1\,\r\n \ tag_um\:空,\r\n \ tag_active\:真,\r\n \ tag_collecting\:真,\r\n \ tag_data_edit\:假,\ \r\n \ tag_source_name\:\ REW_SAX_BOWED.ACTUALVELOCITY\,\r\n \ tag_source_index\:\ 0\,\r\ n \ tag_source_tagtype\: F Float\,\r\n \ tag_source_lenght\:0,\r\n tag tag_collect_frequency\:100,\r\n \ tag_collect_unit \:\ 1\,\r\n \ tag_low_limit\:1.0,\r\n \ tag_high_limit\:1.0,\r\n tag tag_control_limit_active\:否,\r\n \ tag_calc\:空,\r\n \ tag_level\:0,\r\n \ tag_origine_dati\:\标记名称= REW_SAX_BOWED_ActualVelocity,地址= REW_SAX_BOWED.ACTUALVELOCITY,数据类型=浮点,尊重数据类型= 0,客户端访问权限= RO,扫描速率= 100,缩放比例,原始低点=,原始高点=,低位缩放=,高位缩放=,数据类型缩放=,钳位低=,钳位高=,英制单位=,描述=,取反值=,\ \r\n} \r\n ] \r\n}发生异常:读取DataTable时出现意外的JSON令牌。应该是StartArray,得到了String。路径,第1行,位置9919。

"{\r\n \"Table\": [\r\n {\r\n \"IdOwner\": \"Davide\",\r\n \"tag_id\": 1,\r\n \"tag_type\": \"3\",\r\n \"tag_group\": \"Group_2\",\r\n \"tag_name\": \"Alfa\",\r\n \"tag_sequence\": 123458,\r\n \"tag_description\": \"Description_2\",\r\n \"tag_short_descritpion\": \"Desc_2\",\r\n \"tag_um\": \"kg\",\r\n \"tag_active\": true,\r\n \"tag_collecting\": false,\r\n \"tag_data_edit\": true,\r\n \"tag_source_name\": \"Alfaservice\",\r\n \"tag_source_index\": \"Undefined_index\",\r\n \"tag_source_tagtype\": \"Source_tag_type\",\r\n \"tag_source_lenght\": 50,\r\n \"tag_collect_frequency\": 200,\r\n \"tag_collect_unit\": \"ms\",\r\n \"tag_low_limit\": 100.0,\r\n \"tag_high_limit\": 370.0,\r\n \"tag_control_limit_active\": true,\r\n \"tag_calc\": \"useless_field\",\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": null\r\n },\r\n {\r\n \"IdOwner\": \"Giuseppe\",\r\n \"tag_id\": 3,\r\n \"tag_type\": \"Type_1\",\r\n \"tag_group\": \"Group_2\",\r\n \"tag_name\": \"Bemad\",\r\n \"tag_sequence\": 123456,\r\n \"tag_description\": \"Description_5\",\r\n \"tag_short_descritpion\": \"Desc_5\",\r\n \"tag_um\": \"Kg\",\r\n \"tag_active\": true,\r\n \"tag_collecting\": false,\r\n \"tag_data_edit\": true,\r\n \"tag_source_name\": \"Alfaservice\",\r\n \"tag_source_index\": \"Undefined_index\",\r\n \"tag_source_tagtype\": \"Source_tag_type\",\r\n \"tag_source_lenght\": 50,\r\n \"tag_collect_frequency\": 200,\r\n \"tag_collect_unit\": \"ms\",\r\n \"tag_low_limit\": 250.0,\r\n \"tag_high_limit\": 660.0,\r\n \"tag_control_limit_active\": true,\r\n \"tag_calc\": \"useless_field\",\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": null\r\n },\r\n {\r\n \"IdOwner\": \"Madalin\",\r\n \"tag_id\": 2,\r\n \"tag_type\": \"Type_2\",\r\n \"tag_group\": \"Group_1\",\r\n \"tag_name\": \"Bemad\",\r\n \"tag_sequence\": 123456,\r\n \"tag_description\": \"Description_1\",\r\n \"tag_short_descritpion\": \"Desc_1\",\r\n \"tag_um\": \"Kg\",\r\n \"tag_active\": true,\r\n \"tag_collecting\": false,\r\n \"tag_data_edit\": true,\r\n \"tag_source_name\": \"Alfaservice\",\r\n \"tag_source_index\": \"Undefined_index\",\r\n \"tag_source_tagtype\": \"Source_tag_type\",\r\n \"tag_source_lenght\": 50,\r\n \"tag_collect_frequency\": 200,\r\n \"tag_collect_unit\": \"ms\",\r\n \"tag_low_limit\": 150.0,\r\n \"tag_high_limit\": 350.0,\r\n \"tag_control_limit_active\": true,\r\n \"tag_calc\": \"useless_field\",\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": null\r\n },\r\n {\r\n \"IdOwner\": \"test\",\r\n \"tag_id\": 6,\r\n \"tag_type\": null,\r\n \"tag_group\": null,\r\n \"tag_name\": \"REW_SAX_BOWED_ActualVelocity\",\r\n \"tag_sequence\": 0,\r\n \"tag_description\": \"1\",\r\n \"tag_short_descritpion\": \"1\",\r\n \"tag_um\": null,\r\n \"tag_active\": true,\r\n \"tag_collecting\": true,\r\n \"tag_data_edit\": false,\r\n \"tag_source_name\": \"REW_SAX_BOWED.ACTUALVELOCITY\",\r\n \"tag_source_index\": \"0\",\r\n \"tag_source_tagtype\": \"Float\",\r\n \"tag_source_lenght\": 0,\r\n \"tag_collect_frequency\": 100,\r\n \"tag_collect_unit\": \"1\",\r\n \"tag_low_limit\": 1.0,\r\n \"tag_high_limit\": 1.0,\r\n \"tag_control_limit_active\": false,\r\n \"tag_calc\": null,\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": null\r\n },\r\n {\r\n \"IdOwner\": \"test\",\r\n \"tag_id\": 7,\r\n \"tag_type\": null,\r\n \"tag_group\": null,\r\n \"tag_name\": \"REW_SAX_BOWED_ActualVelocity\",\r\n \"tag_sequence\": 0,\r\n \"tag_description\": \"1\",\r\n \"tag_short_descritpion\": \"1\",\r\n \"tag_um\": null,\r\n \"tag_active\": true,\r\n \"tag_collecting\": true,\r\n \"tag_data_edit\": false,\r\n \"tag_source_name\": \"REW_SAX_BOWED.ACTUALVELOCITY\",\r\n \"tag_source_index\": \"0\",\r\n \"tag_source_tagtype\": \"Float\",\r\n \"tag_source_lenght\": 0,\r\n \"tag_collect_frequency\": 100,\r\n \"tag_collect_unit\": \"1\",\r\n \"tag_low_limit\": 1.0,\r\n \"tag_high_limit\": 1.0,\r\n \"tag_control_limit_active\": false,\r\n \"tag_calc\": null,\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": \"Tag Name=REW_SAX_BOWED_ActualVelocity,Address=REW_SAX_BOWED.ACTUALVELOCITY,Data Type=Float,Respect Data Type=0,Client Access=RO,Scan Rate=100,Scaling=,Raw Low=,Raw High=,Scaled Low=,Scaled High=,Scaled Data Type=,Clamp Low=,Clamp High=,Eng Units=,Description=,Negate Value=,\"\r\n },\r\n {\r\n \"IdOwner\": \"test\",\r\n \"tag_id\": 8,\r\n \"tag_type\": null,\r\n \"tag_group\": null,\r\n \"tag_name\": \"REW_SAX_BOWED_ActualVelocity\",\r\n \"tag_sequence\": 0,\r\n \"tag_description\": \"1\",\r\n \"tag_short_descritpion\": \"1\",\r\n \"tag_um\": null,\r\n \"tag_active\": true,\r\n \"tag_collecting\": true,\r\n \"tag_data_edit\": false,\r\n \"tag_source_name\": \"REW_SAX_BOWED.ACTUALVELOCITY\",\r\n \"tag_source_index\": \"0\",\r\n \"tag_source_tagtype\": \"Float\",\r\n \"tag_source_lenght\": 0,\r\n \"tag_collect_frequency\": 100,\r\n \"tag_collect_unit\": \"1\",\r\n \"tag_low_limit\": 1.0,\r\n \"tag_high_limit\": 1.0,\r\n \"tag_control_limit_active\": false,\r\n \"tag_calc\": null,\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": \"Tag Name=REW_SAX_BOWED_ActualVelocity,Address=REW_SAX_BOWED.ACTUALVELOCITY,Data Type=Float,Respect Data Type=0,Client Access=RO,Scan Rate=100,Scaling=,Raw Low=,Raw High=,Scaled Low=,Scaled High=,Scaled Data Type=,Clamp Low=,Clamp High=,Eng Units=,Description=,Negate Value=,\"\r\n },\r\n {\r\n \"IdOwner\": \"test\",\r\n \"tag_id\": 9,\r\n \"tag_type\": null,\r\n \"tag_group\": null,\r\n \"tag_name\": \"REW_SAX_BOWED_ActualVelocity\",\r\n \"tag_sequence\": 0,\r\n \"tag_description\": \"1\",\r\n \"tag_short_descritpion\": \"1\",\r\n \"tag_um\": null,\r\n \"tag_active\": true,\r\n \"tag_collecting\": true,\r\n \"tag_data_edit\": false,\r\n \"tag_source_name\": \"REW_SAX_BOWED.ACTUALVELOCITY\",\r\n \"tag_source_index\": \"0\",\r\n \"tag_source_tagtype\": \"Float\",\r\n \"tag_source_lenght\": 0,\r\n \"tag_collect_frequency\": 100,\r\n \"tag_collect_unit\": \"1\",\r\n \"tag_low_limit\": 1.0,\r\n \"tag_high_limit\": 1.0,\r\n \"tag_control_limit_active\": false,\r\n \"tag_calc\": null,\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": \"Tag Name=REW_SAX_BOWED_ActualVelocity,Address=REW_SAX_BOWED.ACTUALVELOCITY,Data Type=Float,Respect Data Type=0,Client Access=RO,Scan Rate=100,Scaling=,Raw Low=,Raw High=,Scaled Low=,Scaled High=,Scaled Data Type=,Clamp Low=,Clamp High=,Eng Units=,Description=,Negate Value=,\"\r\n },\r\n {\r\n \"IdOwner\": \"test\",\r\n \"tag_id\": 10,\r\n \"tag_type\": null,\r\n \"tag_group\": null,\r\n \"tag_name\": \"REW_SAX_BOWED_ActualVelocity\",\r\n \"tag_sequence\": 0,\r\n \"tag_description\": \"1\",\r\n \"tag_short_descritpion\": \"1\",\r\n \"tag_um\": null,\r\n \"tag_active\": true,\r\n \"tag_collecting\": true,\r\n \"tag_data_edit\": false,\r\n \"tag_source_name\": \"REW_SAX_BOWED.ACTUALVELOCITY\",\r\n \"tag_source_index\": \"0\",\r\n \"tag_source_tagtype\": \"Float\",\r\n \"tag_source_lenght\": 0,\r\n \"tag_collect_frequency\": 100,\r\n \"tag_collect_unit\": \"1\",\r\n \"tag_low_limit\": 1.0,\r\n \"tag_high_limit\": 1.0,\r\n \"tag_control_limit_active\": false,\r\n \"tag_calc\": null,\r\n \"tag_level\": 0,\r\n \"tag_origine_dati\": \"Tag Name=REW_SAX_BOWED_ActualVelocity,Address=REW_SAX_BOWED.ACTUALVELOCITY,Data Type=Float,Respect Data Type=0,Client Access=RO,Scan Rate=100,Scaling=,Raw Low=,Raw High=,Scaled Low=,Scaled High=,Scaled Data Type=,Clamp Low=,Clamp High=,Eng Units=,Description=,Negate Value=,\"\r\n }\r\n ]\r\n}"An exception occured: Unexpected JSON token when reading DataTable. Expected StartArray, got String. Path '', line 1, position 9919.


推荐答案

首先,您需要删除此行:

First you need to remove this line:

Dim json_jsonstring = Newtonsoft.Json.JsonConvert.SerializeObject(json_result)

下载的字符串已经 JSON,如果再次对其进行序列化 ,则会将其转换为转义符JSON字符串文字,反序列化将返回字符串-而不是您想要的 DataTable 。这说明了在读取DataTable时出现错误意外的JSON令牌。应该是StartArray,得到了String。路径'',第1行,位置9919 :Json.NET将整个 json_jsonstring 字符串解析为单个转义的字符串文字。

The downloaded string is already JSON, if you serialize it again you will turn it into an escaped JSON string literal, whereupon deserializing it returns the string - and not a DataTable as you want. This explains the error Unexpected JSON token when reading DataTable. Expected StartArray, got String. Path '', line 1, position 9919: Json.NET parsed the entire json_jsonstring string as a single, escaped string literal.

第二,您的JSON包含一个外部根对象,如下所示:

Second, your JSON contains an outer root object like so:

{
  "Table": [
    {
      "IdOwner": "Davide", 
      // Additional properties
    },
    // Additional rows.
  ]
}

因此,您需要引入一个带有必要对象的根对象 Table 属性可将 DataTable 反序列化为。您可以使用以下通用根来完成此操作:

Thus you need to introduce a root object with the necessary Table property to deserialize the DataTable into. You can do it with the following generic root:

Class RootObject(Of T)
    Public Property Table As T
End Class

然后反序列化如下:

Dim table = JsonConvert.DeserializeObject(Of RootObject(Of DataTable))(json_result).Table

示例小提琴

或者,如果您不想创建根类型,请反序列化为临时 Dictionary(字符串,数据表)

Or, if you don't care to create a root type, deserialize to a temporary Dictionary(Of string, DataTable):

Dim table = JsonConvert.DeserializeObject(Of Dictionary(Of string, DataTable))(json_result).Values.SingleOrDefault()

示例小提琴#2

你问d,我想知道是否可以创建一种删除 {Table:部分和最后一个}的子字符串?当然可以,但是我不建议这样做。您将手动复制JSON解析器的某些逻辑。让Json.NET为您完成工作,它将正确处理空格和换行符。

You asked, I was wondering if making a sort of "substring" deleting the "{ Table:" part and the last } could work? Certainly it's possible but I would not recommend this. You would be manually duplicating some of the logic of a JSON parser. Let Json.NET do the work for you, it will handle whitespace and newlines correctly.

这篇关于将json转换为datatable vb的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆