La désérialisation d'un type inconnu dans JSON.NET
J'ai juste eu une prise de JSON.NET
et sa été très bien jusqu'à présent.
Cependant, je ne peux pas comprendre comment déterminer la type
d'un objet sérialisé lors de la désérialisation il.
Comment puis-je déterminer les objets de la classe pour le lancer?
Pour préciser ma question, disons que j'ai voulu faire ce
string json = <<some json i do'nt know>>
var data = JsonConvert.DeserializeObject(json);
if (data is Person)
{
//do something
}
else if (data is Order)
{
//do something else
}
N'Json.NET le soutien de ce type de fonctionnalité?
- peut-être
GetType()
? - C'était ma première pensée trop. Cependant, le type est
Newtonsoft.Json.Linq.JObject
- JSON est un format non extensible et de ne pas garder les métadonnées sur la sérialisation. Vous DEVEZ savoir quel type vous êtes désérialiser.
- comment puis-je différencier les différents objets? Lorsqu'un client envoie quelque chose à mon serveur, je dois être en mesure de détecter ce que c'est
- Comment le client envoie des données sur votre serveur? Vous devez avoir un protocole pour déterminer ce que le client a envoyé.
- Si GetType() renvoie JObject la valeur de la clé de tout simplement un autre objet json. Vous devez répéter en elle et de lire les clés suivantes.
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser
dynamic
typeConsole.WriteLine(JsonConvert.DeserializeObject<dynamic>(serializedMessage).GetType());
me donne justeNewtonsoft.Json.Linq.JObject
il peut vous aider à
Dans le cas où vous contrôler la sérialisation, vous pouvez utiliser le TypeNameHandling réglage