2017-01-26 4 views
2

J'ai un document JSON provenant d'un fournisseur qui ressemble à ceci:désérialisation Certains en utilisant Odd JSON 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 
        } 
       } 
      } 
     } 
    }] 
} 

La plupart de ce document est assez facile à désérialiser dans un objet à l'aide cependant, DataContractSerializer typique, il sont un couple de clés/valeurs que je ne suis pas sûr de ce que la «meilleure pratique» pourrait être.

Si vous regardez la touche "composants", la première clé après celle-ci est intitulée "Windows81x64". Cette clé peut changer de document à document et peut avoir n'importe quelle valeur. Il devrait presque être une propriété 'Nom' de la collection mais je ne peux pas contrôler cela. De plus, à l'intérieur de la clé 'Windows81x64' il y a une autre propriété appelée 'data'. Selon le fournisseur, la valeur des données est «anonyme». Donc, fondamentalement, ça peut être n'importe quoi.

Des idées sur la meilleure façon de désérialiser ce dans un objet personnalisé quand il s'agit de ces parties du document? Je vous remercie.

Répondre

2

Vous pouvez désérialiser les dynamiques Dictionary<string, object>

Ou si vous connaissez le type de la valeur que vous pouvez utiliser Dictionary<string, ValueType> où la clé du dictionnaire serait le nom (dans votre cas Windows81x64)

+0

Merci. Je ne me suis pas rendu compte que c'était si simple. :) –