Sérialisation d’un object contenant un dictionnaire de sorte que les clés / valeurs du dictionnaire soient rendues dans l’object contenant

J’ai un cours comme suit:

public class Usage { public ssortingng app { get; set; } public Dictionary KVPs { get; set; } } 

Quand j’utilise ce code:

 var json = new JavaScriptSerializer().Serialize(usage); 

ça me donne ce JSON:

 {"app":"myapp", "KVPs":{"k1":"v1", "k2":"v2"}} 

J’aimerais qu’il retourne quelque chose comme ceci à la place:

 {"app":"myapp", "k1":"v1", "k2":"v2"} 

Y a-t-il un moyen de faire cela? J’utilise actuellement le JavaScriptSerializer . S’il existe un moyen de faire cela en utilisant JSON.Net, je serais prêt à passer à cela.

Si vous souhaitez utiliser JSON.Net et que vous souhaitez modifier le type de votre dictionnaire de Dictionary à Dictionary , un moyen simple de [JsonExtensionData] consiste à append l’atsortingbut [JsonExtensionData] à la propriété de votre dictionnaire comme ceci:

 public class Usage { public ssortingng app { get; set; } [JsonExtensionData] public Dictionary KVPs { get; set; } } 

Ensuite, vous pouvez sérialiser votre object comme ceci:

 ssortingng json = JsonConvert.SerializeObject(usage); 

Cela vous donnera le JSON que vous voulez:

 {"app":"myapp","k1":"v1","k2":"v2"} 

Et le bonus est que vous pouvez désérialiser le JSON dans votre classe d’ Usage aussi facilement si nécessaire. Toutes les propriétés du JSON qui ne correspondent pas aux membres de la classe seront placées dans le dictionnaire KVPs .

 Usage usage = JsonConvert.DeserializeObject(json); 

pas joli mais ça marcherait …

 usage.KVPs["app"] = usage.app; json = new JavaScriptSerializer().Serialize(usage.KVPs)