| |
VB.NET - Ein- und UmsteigerJsonProperty auslesen | | | Autor: StikxX | Datum: 27.01.22 00:19 |
| Hallo zusammen,
ich habe folgenden json String
Zitat: | | {
"Message": "{
"Hostname": "[EU/GER] Test Server",
"MaxPlayers": 2,
"Players": 0,
"Queued": 0,
"Joining": 0,
"EntityCount": 85486,
"GameTime": "06/14/2024 23:03:17",
"Uptime": 1145,
"Map": "Procedural Map",
"Framerate": 237.0,
"Memory": 1412,
"Collections": 137,
"NetworkIn": 0,
"NetworkOut": 0,
"Restarting": false,
"SaveCreatedTime": "01/06/2022 23:17:08"
}",
"Identifier": 1,
"Type": "Generic",
"Stacktrace": ""
} | |
Wie kann ich z.b. MaxPlayers ausgeben?
Meine klasse sieht bis jetzt so aus.
Imports Newtonsoft.Json
Namespace .WebSockets
Public Class Packet
Public Sub New(message As Object, identifier As Integer, ByVal Optional _
name As String = "Test")
Me.Message = message
Me.Identifier = identifier
Me.Name = name
MaxPlayers = MaxPlayers
End Sub
<JsonProperty("Identifier")>
Public Property Identifier As Integer
<JsonProperty("Message")>
Public Property Message As Object
<JsonProperty("Name")>
Public Property Name As String
<JsonProperty("MaxPlayers")>
Public Property MaxPlayers As Integer
End Class
End Namespace Ich komm einfach nicht mehr weiter :/ | |
Re: JsonProperty auslesen | | | Autor: HenryV | Datum: 27.01.22 09:42 |
| Hast du den JSON-String selbst erzeugt oder kommt dieser fertig bei dir an?
Denn dieser JSON-String ist ungültig. Die "" um die {} bei der Message-Value sind zu viel.
Das rührt wohl daher, dass deine Variable Message ein Objekt ist und keine Klasse des Typs Message.
Hier einmal ein funktionierender Code:
{
"Message": {
"Hostname": "[EU/GER] Test Server",
"MaxPlayers": 2,
"Players": 0,
"Queued": 0,
"Joining": 0,
"EntityCount": 85486,
"GameTime": "06/14/2024 23:03:17",
"Uptime": 1145,
"Map": "Procedural Map",
"Framerate": 237.0,
"Memory": 1412,
"Collections": 137,
"NetworkIn": 0,
"NetworkOut": 0,
"Restarting": false,
"SaveCreatedTime": "01/06/2022 23:17:08"
},
"Identifier": 1,
"Type": "Generic",
"Stacktrace": ""
} Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
Button1.Click
Dim JSON_Packet As Packet = JsonConvert.DeserializeObject(Of Packet)( _
JSON_String)
MessageBox.Show("Max Players: " & JSON_Packet.Message.MaxPlayers)
End Sub
End Class
Public Class Packet
Public Property Message As Message
Public Property Identifier As Integer
Public Property Type As String
Public Property Stacktrace As String
End Class
Public Class Message
Public Property Hostname As String
Public Property MaxPlayers As Integer
Public Property Players As Integer
Public Property Queued As Integer
Public Property Joining As Integer
Public Property EntityCount As Integer
Public Property GameTime As String
Public Property Uptime As Integer
Public Property Map As String
Public Property Framerate As Single
Public Property Memory As Integer
Public Property Collections As Integer
Public Property NetworkIn As Integer
Public Property NetworkOut As Integer
Public Property Restarting As Boolean
Public Property SaveCreatedTime As String
End Class | |
Re: JsonProperty auslesen | | | Autor: StikxX | Datum: 27.01.22 12:26 |
| Hallo HenryV,
der JSON-String kommt bei so schon an.
Ich beziehe ihn aus;
Private Shared Sub WebSocket_OnMessage(ByVal sender As Object, ByVal e As _
MessageEventArgs)
Msgbox(e.data)
End Sub Mit deinem Code erhalte ich leider ein Fehler bei;
Dim JSON_Packet As Packet = JsonConvert.DeserializeObject(Of Packet)(e.Data) Newtonsoft.Json.JsonSerializationException: "Error converting value "{
"Hostname": "[EU/GER] RustyBeach Test Server",
"MaxPlayers": 2,
"Players": 0,
"Queued": 0,
"Joining": 0,
"EntityCount": 102836,
"GameTime": "07/12/2024 16:57:31",
"Uptime": 7502,
"Map": "Procedural Map",
"Framerate": 30.0,
"Memory": 1699,
"Collections": 147,
"NetworkIn": 0,
"NetworkOut": 0,
"Restarting": false,
"SaveCreatedTime": "01/06/2022 23:17:08"
}" to type 'WindowsApplication23.Sharpcon.WebSockets.Message'. Path 'Message'," & _
"line 2, position 495." Und so sieht das ganze als Text aus:
{
"Message": "{\r\n \"Hostname\": \"[EU/GER] RustyBeach Test Server\",\r\n " & _
"\"MaxPlayers\": 2,\r\n \"Players\": 0,\r\n \"Queued\": 0,\r\n " & _
"\"Joining\": 0,\r\n \"EntityCount\": 102817,\r\n \"GameTime\":" & _
"\"07/12/2024 17:18:03\",\r\n \"Uptime\": 7609,\r\n \"Map\": \"Procedural _
Map\",\r\n \"Framerate\": 30.0,\r\n \"Memory\": 1719,\r\n " & _
"\"Collections\": 147,\r\n \"NetworkIn\": 0,\r\n \"NetworkOut\": 0,\r\n " & _
"\"Restarting\": false,\r\n \"SaveCreatedTime\": \"01/06/2022 _
23:17:08\"\r\n}",
"Identifier": 0,
"Type": "Generic",
"Stacktrace": ""
} | |
Re: JsonProperty auslesen | | | Autor: StikxX | Datum: 27.01.22 12:38 |
| i got it
Dim jstring As String = e.Data
jstring = jstring.Replace("\r\n", Environment.NewLine)
jstring = jstring.Replace("\", "")
jstring = jstring.Replace("""{", "{")
jstring = jstring.Replace("}""", "}")
MessageBox.Show(jstring)
Dim o As JObject = JObject.Parse(jstring)
Dim maxPlayers As String = CStr(o.SelectToken( _
"Message.MaxPlayers"))
MessageBox.Show(maxPlayers) Tnaks for your help. | |
Re: JsonProperty auslesen | | | Autor: StikxX | Datum: 27.01.22 13:50 |
| Aber wie kann ich mir das Ergebnis jetzt in ein Label auf der Form1 wiedergeben? :/
Zusätzliche Informationen: Invoke oder BeginInvoke kann für ein Steuerelement erst aufgerufen werden, wenn das Fensterhandle erstellt wurde.
Private Shared Sub WebSocket_OnMessage(ByVal sender As Object, ByVal e As _
MessageEventArgs)
Dim jstring As String = e.Data
jstring = jstring.Replace("\r\n", Environment.NewLine)
jstring = jstring.Replace("\", "")
jstring = jstring.Replace("""{", "{")
jstring = jstring.Replace("}""", "}")
'MessageBox.Show(jstring)
Dim o As JObject = JObject.Parse(jstring)
Dim maxPlayers As String = CStr(o.SelectToken("Message.Hostname"))
MessageBox.Show(maxPlayers)
Form1.Label1.Invoke(Sub() Form1.Label1.Text = maxPlayers)
End Sub | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|