ich etwas Hilfe in JSON desereialization von Nullwert benötigen, gibt es einen Fehler in dem Fenster Ausgabe, aber ich weiß nicht, was die Ursache ist, der Fehler ist:Deserialisieren Nullwert in JSON
Exception thrown: 'Newtonsoft.Json.JsonSerializationException' in Newtonsoft.Json.dll
Der JSON sieht wie folgt aus:
[{ "TID": "1", "taskdescript": "Tank", "Taskstatus": "1", "username": "Administrator", "prjdescript":“ XXX "," dateuseraccept ": null," geschätzteZeit ":" 0 "," actualduration ":" 0 "}]
Der Teil des Codes, der die deserialize ist der Umgang sieht wie folgt aus:
.....
Dim responsebody = (New Text.UTF8Encoding).GetString(responsebytes)
'Dim settings = New JsonSerializerSettings()
'settings.NullValueHandling = NullValueHandling.Include
'settings.MissingMemberHandling = MissingMemberHandling.Ignore
'settings.DateParseHandling = DateParseHandling.None
Console.WriteLine(responsebody)
Dim datacollection = JsonConvert.DeserializeObject(Of jsonPrjData())(responsebody)
For Each oneVar As jsonPrjData In datacollection
' Avoid Nothing vars.
MsgBox(oneVar.TID.ToString)
If oneVar IsNot Nothing Then
datagrid.Rows.Add(oneVar.TID, oneVar.taskDescript, oneVar.taskStatus, oneVar.prjDescript, oneVar.username, oneVar.dateUserAccept.ToString("dd-MM-yyyy"), oneVar.estimatedDuration, oneVar.actualDuration)
End If
Next
Die Klasse ist:
Public Class jsonPrjData
Public Property TID() As Int16
Public Property taskDescript() As String
Public Property taskStatus() As Int16
Public Property username() As String
Public Property prjDescript() As String
Public Property dateUserAccept() As Date
Public Property estimatedDuration() As Int16
Public Property actualDuration() As Int16
End Class
Die Linie mit MsgBox(oneVar.TID.ToString)
nicht nichts zurückgeben, aufgrund des Fehlers wenn der Nullwert deserialisiert wird. Wie kann ich das Problem lösen?
Das ist nicht gültig json. Dort sind viele zusätzliche Zitate drin. Hast du eine bessere Version/Kopie? – Plutonix
Ich habe den JSON aktualisiert, so wird es vom PHP-Skript ausgegeben. – Starlays
Das ist besser - der alte hatte sogar die ':' Noten zitiert. Hat es wirklich Sterne um die Null? oder bist du das? – Plutonix