2017-01-26 2 views
2

ich ein JSON-Dokument von einem Anbieter kommen, die wie folgt aussieht:Deserialisieren Some Odd JSON mit C#

{ 
    "content": [{ 
     "name": "Windows 8.1 x64", 
     "id": "Windows81x64", 
     "components": { 
      "Windows81x64": { 
       "propertyGroups": ["VirtualWindows81x64"], 
       "dependsOn": [], 
       "data": { 
        "provisioning_workflow": { 
         "fixed": { 
          "id": "WIMImageWorkflow", 
          "label": "WIMImageWorkflow" 
         } 
        }, 
        "memory": { 
         "default": 2048, 
         "min": 2048, 
         "max": 16384 
        } 
       } 
      } 
     } 
    }] 
} 

Die meisten dieses Dokument ist es ziemlich einfach, in ein Objekt deserialisieren den typischen DataContractSerializer verwenden, aber es sind ein paar Schlüssel/Werte, bei denen ich nicht sicher bin, was die "Best Practice" sein könnte.

Wenn Sie den Schlüssel "Komponenten" betrachten, trägt der erste Schlüssel nach dem Titel "Windows81x64". Dieser Schlüssel kann von Dokument zu Dokument wechseln und kann einen beliebigen Wert haben. Es sollte fast eine "Name" -Eigenschaft der Sammlung sein, aber ich kann das nicht kontrollieren. Außerdem gibt es innerhalb des 'Windows81x64' Schlüssels eine weitere Eigenschaft namens 'data'. Laut Anbieter ist der Wert von Daten "anonym". Also, im Grunde kann es alles sein.

Haben Sie Ideen, wie Sie dieses Objekt am besten zu einem benutzerdefinierten Objekt deserialisieren können, wenn es um diese Teile des Dokuments geht? Vielen Dank.

Antwort

2

Sie können dynamische diejenigen als Dictionary<string, object>

deserialisieren Oder wenn Sie den Wert des Typ kennen, können Sie Dictionary<string, ValueType> verwenden, wo der Schlüssel des Wörterbuchs der Name (in Ihrem Fall Windows81x64) würde

+0

Danke. Ich wusste nicht, dass es so einfach war. :) –

Verwandte Themen