JSON korrekt Deserialisieren

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

    JSON korrekt Deserialisieren

    Hallo,
    ich bin immernoch an dem Minecraft Modpack und jetzt brauche ich eine Funktion, um ein neues Profil zu erstellen. Eigentlich kein Problem, doch jetzt steht da sowas:
    Spoiler anzeigen

    Quellcode

    1. {
    2. "profiles": {
    3. "TestProfil": {
    4. "name": "TestProfil",
    5. "gameDir": "C:\\Users\\Vincent\\AppData\\Roaming\\.minecraft",
    6. "javaDir": "C:\\Program Files (x86)\\Java\\jre7\\bin\\javaw.exe",
    7. "javaArgs": "-Xmx1G",
    8. "resolution": {
    9. "width": 854,
    10. "height": 480
    11. },
    12. "allowedReleaseTypes": [
    13. "snapshot",
    14. "release"
    15. ]
    16. },
    17. "(Default)": {
    18. "authentication": {
    19. "username": "VincentTB",
    20. "accessToken": "<nix>",
    21. "uuid": "<nix>",
    22. "displayName": "VincentTB"
    23. },
    24. "name": "(Default)"
    25. }
    26. },
    27. "selectedProfile": "(Default)",
    28. "clientToken": "<nix>"
    29. }

    Das Problem ist, dass es nicht "Profil": {} heißt sondern dass da immer der Name steht (also "TestProfil": {}). Demnach generiert zB. der JsonGenerator für jedes Profil eine eigene Klasse. Was ich brauche ist irgendeine Möglichkeit, den Klassen-Namen immer der Property name gleich zu stellen. Wie setzte ich sowas um oder muss da RegEx ran (aber das wird glaube sehr schwer...)? Oder gibt es hoffentlich noch eine andere Möglichkeit, sowas zu machen? Ich bin totaler Anfänger mit JSON, ich wusste auch nicht, was ich da jetzt googlen soll...
    Mfg
    Vincent

    Jap, Json.Net hatte ich auch schon im Visier. Aber wie kann ich mit deiner Möglichkeit Sachen abfragen/hinzufügen? Bis jetzt habe ich in Bezug auf Json nur Deserialisiert... Das erschien mir am saubersten.
    Mfg
    Vincent

    Schau mal da:
    [VB.NET] [WCF] Verarbeitung von JSON
    [VB.NET] [JSON] Object ist ein Array. Richtig Umwandeln?

    Für JSON.NET habe ich mir folgende Hilfsklasse gemacht:

    VB.NET-Quellcode

    1. Module SerializingExtensions
    2. <Extension()>
    3. public Function SerializeToJson(Of T)(e as T, Optional format as Formatting = Formatting.None) as String
    4. return JsonConvert.SerializeObject(e, format)
    5. end Function
    6. <Extension()>
    7. public Function SerializeToJson(Of T)(str as String) as T
    8. return JsonConvert.DeserializeObject(Of T)(str)
    9. end Function
    10. End Module


    Verwendung:

    VB.NET-Quellcode

    1. Dim a as new EineKlasse()
    2. Dim jsonString as String = a.SerializeToJson()
    3. ' Deserialisierung
    4. Dim b as EineKlasse = jsonString.DeserializeFromJson(Of EineKlasse)()


    Ansonsten kannst du wie im Post von Lukas vorgehen. Für dein bestimmtes Problem könnte ein Dictionary hilfreich sein. Falls du JSON.NET verwenden willst, steht dort alles in der schönen(!) Dokumentation:
    james.newtonking.com/projects/json/help/index.aspx
    Von meinem iPhone gesendet