Imports System.Collections.Generic
Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json.Converters
Imports Newtonsoft.Json.Serialization
Dim json_result = GetJson()
Dim table = JsonConvert.DeserializeObject(Of Dictionary(Of string, DataTable))(json_result).Values.SingleOrDefault()
Dim newJString = Newtonsoft.Json.JsonConvert.SerializeObject(table, Newtonsoft.Json.Formatting.Indented)
Console.WriteLine("Re-serialized JSON: ")
Console.WriteLine(newJString)
Public Function GetJson() As String
Dim json_result As String = <![CDATA[
"tag_description": "Description_2",
"tag_short_descritpion": "Desc_2",
"tag_source_name": "Alfaservice",
"tag_source_index": "Undefined_index",
"tag_source_tagtype": "Source_tag_type",
"tag_collect_frequency": 200,
"tag_collect_unit": "ms",
"tag_control_limit_active": true,
"tag_calc": "useless_field",
"tag_description": "Description_5",
"tag_short_descritpion": "Desc_5",
"tag_source_name": "Alfaservice",
"tag_source_index": "Undefined_index",
"tag_source_tagtype": "Source_tag_type",
"tag_collect_frequency": 200,
"tag_collect_unit": "ms",
"tag_control_limit_active": true,
"tag_calc": "useless_field",
"tag_description": "Description_1",
"tag_short_descritpion": "Desc_1",
"tag_source_name": "Alfaservice",
"tag_source_index": "Undefined_index",
"tag_source_tagtype": "Source_tag_type",
"tag_collect_frequency": 200,
"tag_collect_unit": "ms",
"tag_control_limit_active": true,
"tag_calc": "useless_field",
"tag_name": "REW_SAX_BOWED_ActualVelocity",
"tag_short_descritpion": "1",
"tag_source_name": "REW_SAX_BOWED.ACTUALVELOCITY",
"tag_source_tagtype": "Float",
"tag_collect_frequency": 100,
"tag_control_limit_active": false,
"tag_name": "REW_SAX_BOWED_ActualVelocity",
"tag_short_descritpion": "1",
"tag_source_name": "REW_SAX_BOWED.ACTUALVELOCITY",
"tag_source_tagtype": "Float",
"tag_collect_frequency": 100,
"tag_control_limit_active": false,
"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=,"
"tag_name": "REW_SAX_BOWED_ActualVelocity",
"tag_short_descritpion": "1",
"tag_source_name": "REW_SAX_BOWED.ACTUALVELOCITY",
"tag_source_tagtype": "Float",
"tag_collect_frequency": 100,
"tag_control_limit_active": false,
"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=,"
"tag_name": "REW_SAX_BOWED_ActualVelocity",
"tag_short_descritpion": "1",
"tag_source_name": "REW_SAX_BOWED.ACTUALVELOCITY",
"tag_source_tagtype": "Float",
"tag_collect_frequency": 100,
"tag_control_limit_active": false,
"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=,"
"tag_name": "REW_SAX_BOWED_ActualVelocity",
"tag_short_descritpion": "1",
"tag_source_name": "REW_SAX_BOWED.ACTUALVELOCITY",
"tag_source_tagtype": "Float",
"tag_collect_frequency": 100,
"tag_control_limit_active": false,
"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=,"