vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
JsonProperty 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 :/
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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": ""
}
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel