How to create and read a JSON file in vb.net - json

I first created my JSON class, here is the code:
Public Class Fich
<JsonProperty("title")>
Public Property Title As String
<JsonProperty("name")>
Public Property Name As String
<JsonProperty("charge")>
Public Property Charge As String
<JsonProperty("institute")>
Public Property Institute As String
<JsonProperty("celebration")>
Public Property Celebration As String
End class
Public Class Prenommer
<JsonProperty("fiches")>
Public Property Fiches As Fich()
End Class
Then my data string:
Dim rawJson As String = "{""Title"":""TextBox2.Text"",""Name"":""TextBox1.Text"",""Charge"":""TextBox4.Text"",""Institute"":""TextBox15.Text"",""Celebration"":""TextBox5.Text""}"
On this string, I would like it to take into account the TextBox text of my main sheet. For the moment I can't do it, I don't see what I can replace the quadruple quotes that surround them!
And above all, if I can understand the method to achieve this, how to create and read the JSON file with the data from the TextBoxs!
Claude

Related

How to read json return string?

Having trouble to read json return in a useful way
Searching "all over" to find how to create classes and how to de-serialize json return
This is the json return:
[[{"metadata":{},"contentType":0,"contentId":0,"objectName":"Mi","objectId":"1","classId":"118"},
{"metadata":{},"contentType":0,"contentId":0,"objectName":"BA","objectId":"224445","classId":"103"},
{"metadata":{},"contentType":0,"contentId":0,"objectName":"1","objectId":"239011","classId":"104"},
{"metadata":{},"contentType":0,"contentId":0,"objectName":"1","objectId":"239309","classId":"105"}]]
Tried Visual Studio (VB.net) Paste Special to create json classes, but I can't seem to get my head around how to use it. Using Newtonsoft.Json.
These are the classes, how do I deserialize json and make it useful?
Public Class Rootobject
Public Property Property1()() As Class1
End Class
Public Class Class1
Public Property metadata As Metadata
Public Property contentType As Integer
Public Property contentId As Integer
Public Property objectName As String
Public Property objectId As String
Public Property classId As String
End Class
Public Class Metadata
End Class
Your JSON is an array of arrays of Class1 objects, so you need to deserialize to that.
Dim data As Class1()() = JsonConvert.DeserializeObject(Of Class1()())(json)
You don't actually need the Rootobject class here.
Working demo: https://dotnetfiddle.net/1JuaYk

JSON Deserialization into VB.Net object

I've read other answers, but I still seem lost. I am trying to bring JSON into my objects. I call a JSON string through an API, and I want to convert it into the objects after the RequestManager. Am I missing methods or something? Also, the returnChampions2 function is wrong. I posted part of the JSON string after the methods, it's really long.
Public Class RequestManager
Public Function returnChampions2(ByVal strRegion As String) As LeagueChampionMaster
Dim strRequest As String = "https://global.api.pvp.net/api/lol/static-data/" + strRegion + "/v1.2/champion?api_key=" + _APIKey
Return JsonConvert.DeserializeObject(Of LeagueChampionMaster)(returnJSONRequest(strRequest))
End Function
Public Class LeagueChampionMaster
Private _Type As String
Private _Version As String
Private _Data As LeagueChampion()
End Class
Public Class LeagueChampion
Private _ID As Integer
Private _Key As String
Private _Name As String
Private _Title As String
End Class
The json:
{"type":"champion","version":"6.24.1","data":{"Jax":{"id":24,"key":"Jax","name":"Jax","title":"Grandmaster
at Arms"},"Sona":{"id":37,"key":"Sona","name":"Sona","title":"Maven of
the
Strings"},"Tristana":{"id":18,"key":"Tristana","name":"Tristana","title":"the
Yordle
Gunner"},"Varus":{"id":110,"key":"Varus","name":"Varus","title":"the
Arrow of
Retribution"},"Fiora":{"id":114,"key":"Fiora","name":"Fiora","title":"the
Grand
Duelist"},"Singed":{"id":27,"key":"Singed","name":"Singed","title":"the
Mad Chemist"},"TahmKench":{"id":223,"key":"TahmKench","name":"Tahm
Kench","title":"the River
King"},"Leblanc":{"id":7,"key":"Leblanc","name":"LeBlanc","title":"the
Deceiver"},"Thresh":{"id":412,"key":"Thresh","name":"Thresh","title":"the
Chain
Warden"},"Karma":{"id":43,"key":"Karma","name":"Karma","title":"the
Enlightened
One"},"Jhin":{"id":202,"key":"Jhin","name":"Jhin","title":"the
Virtuoso"},"Rumble":{"id":68,"key":"Rumble","name":"Rumble","title":"the
Mechanized
Menace"},"Udyr":{"id":77,"key":"Udyr","name":"Udyr","title":"the
Spirit Walker"},"LeeSin":{"id":64,"key":"LeeSin","name":"Lee
Sin","title":"the Blind
Monk"},"Yorick":{"id":83,"key":"Yorick","name":"Yorick","title":"Shepherd
of
Souls"},"Kassadin":{"id":38,"key":"Kassadin","name":"Kassadin","title":"the
Void
Walker"},"Sivir":{"id":15,"key":"Sivir","name":"Sivir","title":"the
Battle
Mistress"},"MissFortune":{"id":21,"key":"MissFortune","name":"Miss
Fortune","title":"the Bounty
Hunter"},"Draven":{"id":119,"key":"Draven","name":"Draven","title":"the
Glorious
Executioner"},"Yasuo":{"id":157,"key":"Yasuo","name":"Yasuo","title":"the
Unforgiven"},"Kayle":{"id":10,"key":"Kayle","name":"Kayle","title":"The
Judicator"},"Shaco":{"id":35,"key":"Shaco","name":"Shaco","title":"the
Demon
Jester"},"Renekton":{"id":58,"key":"Renekton","name":"Renekton","title":"the
Butcher of the
Sands"},"Hecarim":{"id":120,"key":"Hecarim","name":"Hecarim","title":"the
Shadow of
War"},"Fizz":{"id":105,"key":"Fizz","name":"Fizz","title":"the Tidal
Trickster"}}}
You have several issues. You should know that if you copy the json to the clipboard, Edit -> Paste Special -> Paste Json as Classes Visual Studio will create the classes for you to give you a decent starting point. In this case, the tool is a little dense and will create umpteen identical classes for "Fizz", "Shaco" etc. You have already normalized that.
However, with all the properties Private you wont be able to access the data. Then, the property names are wrong. The json key of id or key will not map/deserialize to _id or _key because they do not match. Lastly, the data collection should be a Dictionary. The key for each player/champion/item will be used as the Dictionary key:
Public Class LeagueContainer
Public Property type As String
Public Property version As String
Public Property data As Dictionary(Of String, DataItem)
End Class
Public Class DataItem
Public Property id As Integer
Public Property key As String
Public Property name As String
Public Property title As String
End Class
usage:
Dim jstr = ... from where ever ...
Dim myData = JsonConvert.DeserializeObject(Of LeagueContainer)(jstr)
' print the keys
For Each kvp In myData.data
Console.WriteLine(kvp.Key)
Next
' what is Yorick's title?
Console.WriteLine("Yorick is '{0}'", myData.data("Yorick").title)
(Partial) Output:
Jax
Sona
Tristana
Varus
Fiora
...
Yorick is 'Shepherd of Souls'

convert object json to object vb .net

Hello I need to convert this objetct to vb.
{"user":
[
{"name":"CompanyName"},
{"password":"CompanyPassword"},
{"email":"mail#company.com"},
{"name":"UserName"},
{"email":"user#mail.com"}
]
}
I try with this:
Public Class InfoObjUser
Public Property name As String
Public Property password As String
Public Property email As String
End Class
Public Class ObjUser
Public Property user As New List(Of InfoObjUser)
End Class
but when I go to serialize json object created in vb
I see that there are no curly brackets.
Also in vb I can't add {"name":"UserName"},{"email":"user#mail.com"}
because they are already present.
Take a look at this: JSON Serialization in .Net.
You need to add the System.Runtime.Serialization as reference to your project, and then set up a serializer object in your code. You also need to tag, which fields in your class match your JSON code.
This would be your class setup:
<DataContract>
Public Class InfoObjUser
<DataMember(Name:="Name")>
Public Property name As String
<DataMember(Name:="Password")>
Public Property password As String
<DataMember(Name:="Email")>
Public Property email As String
End Class
<DataContract>
Public Class ObjUser
<DataMember>
Public Property user As New List(Of InfoObjUser)
End Class
And a Json reader class for that would look like this:
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Json
Public Class JsonReader
Public Shared Function FromString(Of T)(ByVal input As String) As T
Dim serializer As New DataContractJsonSerializer(GetType(T))
Dim memStream As New MemoryStream()
Dim sw As New StreamWriter(memStream)
sw.Write(input)
sw.Flush()
memStream.Position = 0
Dim returnObj As T = CType(serializer.ReadObject(memStream), T)
Return returnObj
End Function
End Class
And finally, you can call this class like this:
Dim jsonString ' = ...Input string here
Dim user As ObjUser = JsonReader.FromString(Of ObjUser)(jsonString)
However, it is not possible to have the name for two different data objects, as the serializer would not know where to map them to, as it goes by Object name.
I don't know how established this data structure already is, but if it's possible, I would suggest you to change the duplicated names, as no real mapping can occur when doing so programmatically.
<DataMember(Name:="UserName")>
Public Property username As String
<DataMember(Name:="UserEmail")>
Public Property usermail As String
If you would add something like this to your data model class and rename the field names in your Json, then it would work.

Json parsing issue in vb.net

I need to parse following json in vb.net. I'm using Json.net but do not know how to do it.
Problem occurs in scan result contains scan detail that conaints anti virus name with some detail. but all the anti-virus is object not an array. So please any body tell me how to do it.
{"file_id":"aaa60a443e3a4426944da9e6fe8a3f3c","scan_results":{"scan_details":{"AegisLab":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Agnitum":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"Ahnlab":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-24T00:00:00Z","scan_time":1.0},"Antiy":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"AVG":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Avira":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"BitDefender":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"ByteHero":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"ClamWin":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"CYREN":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"DrWebGateway":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Emsisoft":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"ESET":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Filseclab":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Fortinet":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"F-prot":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"F-secure":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"GFI":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Hauri":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Ikarus":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"Jiangmin":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"K7":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-20T00:00:00Z","scan_time":1.0},"Kaspersky":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"Lavasoft":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"McAfee-Gateway":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Microsoft":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"NANO":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"nProtect":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Preventon":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"QuickHeal":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"Sophos":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"STOPzilla":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-21T00:00:00Z","scan_time":1.0},"SUPERAntiSpyware":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"Symantec":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"Tencent":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"TotalDefense":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"TrendMicro":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-21T00:00:00Z","scan_time":1.0},"TrendMicroHouseCall":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-21T00:00:00Z","scan_time":1.0},"VirIT":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-20T00:00:00Z","scan_time":1.0},"VirusBlokAda":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-20T00:00:00Z","scan_time":1.0},"Xvirus":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-23T00:00:00Z","scan_time":1.0},"Zillya!":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-22T00:00:00Z","scan_time":1.0},"Zoner":{"scan_result_i":0,"threat_found":"","def_time":"2015-02-18T00:00:00Z","scan_time":1.0}},"rescan_available":true,"data_id":"32fe182492834b6f88b1d95f6a14c886","scan_all_result_i":0,"start_time":"2015-02-23T13:10:55.549Z","total_time":1.0,"total_avs":43,"progress_percentage":100,"in_queue":0,"scan_all_result_a":"Clean"},"file_info":{"file_size":0,"upload_timestamp":"2015-02-23T00:40:41.029Z","md5":"D41D8CD98F00B204E9800998ECF8427E","sha1":"DA39A3EE5E6B4B0D3255BFEF95601890AFD80709","sha256":"E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855","file_type_category":"O","file_type_description":"empty","file_type_extension":"-","display_name":"C:\\testy.xml"},"data_id":"32fe182492834b6f88b1d95f6a14c886"}
First, you need to create a class (or multiple) that can represent the data you want to deserialize.
Looking at the input string you provided, you need a class for FileInfo, ScanDetail, ScanResults and one for the root (let's call it Scan).
It's simply a matter of mapping the JSON keys to a class property (and a dictionary for ScanDetail, since you probably don't want a property for each of it).
So, your classes should look like this:
public class Scan
public property file_id() as string
public property scan_results() AS ScanResults
public property file_info() as FileInfo
public property data_id() as string
End Class
public class ScanResults
public property scan_details As Dictionary(Of string, ScanDetail)
Public Property rescan_available() As Boolean
Public Property data_id() As String
Public Property scan_all_result_i() As Integer
Public Property start_time() As String
Public Property total_time() As Double
Public Property total_avs() As Integer
Public Property progress_percentage() As Integer
Public Property in_queue() As Integer
Public Property scan_all_result_a() As String
End Class
public class ScanDetail
public property scan_result_i() As integer
public property threat_found() as string
public property def_time() as string
public property scan_time() as string
End class
Public Class FileInfo
Public Property file_size() As Integer
Public Property upload_timestamp() As String
Public Property md5() As String
Public Property sha1() As String
Public Property sha256() As String
Public Property file_type_category() As String
Public Property file_type_description() As String
Public Property file_type_extension() As String
Public Property display_name() As String
End Class
Now the deserializing is as easy as
Dim details = NewtonSoft.JSon.JsonConvert.DeserializeObject(Of Scan)(your_json_string)
To get all threat_found values, you can easily query the result:
Dim threats = details.scan_results.scan_details.Select(Function(kvp) kvp.Value.threat_found) _
.Where(Function(t) Not String.IsNullOrWhiteSpace(t)) _
.ToList()
Here is how to deserialize that JSON string assuming you have referenced Json.Net. What you get is a dynamic object with property names the same as the JSON property names. If you were to create a Class with the correct properties you could also deserialize into that specific type and you would have the benefit of strong typing. Put a break point after this code and run with Debug. Look in the Locals window and you can inspect "theobj"'s properties.
Dim obj As String = "{""file_id"":""aaa60a443e3a4426944da9e6fe8a3f3c"",""scan_results"":{""scan_details"":{""AegisLab"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Agnitum"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""Ahnlab"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-24T00:00:00Z"",""scan_time"":1.0},""Antiy"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""AVG"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Avira"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""BitDefender"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""ByteHero"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""ClamWin"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""CYREN"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""DrWebGateway"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Emsisoft"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""ESET"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Filseclab"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Fortinet"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""F-prot"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""F-secure"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""GFI"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Hauri"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Ikarus"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""Jiangmin"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""K7"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-20T00:00:00Z"",""scan_time"":1.0},""Kaspersky"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""Lavasoft"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""McAfee-Gateway"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Microsoft"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""NANO"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""nProtect"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Preventon"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""QuickHeal"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""Sophos"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""STOPzilla"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-21T00:00:00Z"",""scan_time"":1.0},""SUPERAntiSpyware"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""Symantec"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""Tencent"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""TotalDefense"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""TrendMicro"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-21T00:00:00Z"",""scan_time"":1.0},""TrendMicroHouseCall"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-21T00:00:00Z"",""scan_time"":1.0},""VirIT"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-20T00:00:00Z"",""scan_time"":1.0},""VirusBlokAda"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-20T00:00:00Z"",""scan_time"":1.0},""Xvirus"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-23T00:00:00Z"",""scan_time"":1.0},""Zillya!"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-22T00:00:00Z"",""scan_time"":1.0},""Zoner"":{""scan_result_i"":0,""threat_found"":"""",""def_time"":""2015-02-18T00:00:00Z"",""scan_time"":1.0}},""rescan_available"":true,""data_id"":""32fe182492834b6f88b1d95f6a14c886"",""scan_all_result_i"":0,""start_time"":""2015-02-23T13:10:55.549Z"",""total_time"":1.0,""total_avs"":43,""progress_percentage"":100,""in_queue"":0,""scan_all_result_a"":""Clean""},""file_info"":{""file_size"":0,""upload_timestamp"":""2015-02-23T00:40:41.029Z"",""md5"":""D41D8CD98F00B204E9800998ECF8427E"",""sha1"":""DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"",""sha256"":""E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"",""file_type_category"":""O"",""file_type_description"":""empty"",""file_type_extension"":""-"",""display_name"":""C:\\testy.xml""},""data_id"":""32fe182492834b6f88b1d95f6a14c886""}"
Dim theobj = JsonConvert.DeserializeObject(obj)
Thanks for your reply guys. I have done it by following code snippet
Dim jsonstring = IO.File.ReadAllText("C:\\Users\\Administrator\\Desktop\\json.txt")
Dim jo = Newtonsoft.Json.Linq.JObject.Parse(jsonstring)
Dim scanDetail = jo("scan_results")("scan_details")
Dim virusCount As Integer
virusCount = 0
For Each entry As Newtonsoft.Json.Linq.JProperty In scanDetail
entry.CreateReader()
Console.WriteLine(entry.Name)
For Each Val As Object In entry
Dim abc = Newtonsoft.Json.Linq.JObject.Parse(Val.ToString())
Dim threatFound As String = abc("threat_found")
Dim result As Integer = String.Compare(threatFound, "")
If result = -1 Then
virusCount = virusCount + 1
End If
Next
Next
If virusCount = 0 Then
Console.WriteLine("No Virus")
Else
Console.WriteLine("Virus")
End If

How do you deserialize this JSON object into a vb.net object?

I'm using JSon.net to deserialize a json object i'm getting from the GravityForms Web API.
The json that I get back is this...
{"status":200,"response":{
"12":{"id":"12","title":"Test Form","entries":"1"},
"1":{"id":"1","title":"What's My Home Worth?","entries":"92"}
}
}
My VB.net Object that I'm deserializing into is
Namespace Forms
Public Class GFForm
Public Property id As String
Public Property title As String
Public Property entries As String
End Class
Public Class Response
<JsonProperty("1")>
Public Property GFForms() As GFForm
End Class
Public Class TopLevel
Public Property status As Integer
Public Property response As Response
End Class
End Namespace
and I am executing the JsonConvert statement like this..
Dim obj As GravityForms.Forms.TopLevel
obj = JsonConvert.DeserializeObject(Of GravityForms.Forms.TopLevel)(str)
It seems to successfully deserialize the json into my vb object but I am only getting 1 response object. I should be getting 2 of them right?
The odd thing is that the GFForm that I'm getting is the second one (ID:1), which makes it seem like it's over writing the value of the first object (ID:12).
Any help would be great because I've been messing with this for the better part of 2 days and I'm lost.
Edit:
This was not clear in my question above. I do not know the number of GFForm objects that I get back from the web service. It could be 2 (like in the example) or it could be 32 or 45 or whatever.
I'd like to put the GFForm objects in something I can bind to a datagridview
You have two GFForm properties in your response, but one Response object with one property to fill. Maybe you should try using something like that
Namespace Forms
Public Class GFForm
Public Property id As String
Public Property title As String
Public Property entries As String
End Class
Public Class Response
<JsonProperty("1")>
Public Property GFForms1 As GFForm
Public Property GFForms12 As GFForm
End Class
Public Class TopLevel
Public Property status As Integer
Public Property response As Response
End Class
End Namespace
EDIT: If you don't know the number of response properties, try creating a new Response object for each property.