Maison > développement back-end > C++ > Comment puis-je désérialiser JSON avec des structures de tableau et d'objet unique incohérentes pour la même propriété ?

Comment puis-je désérialiser JSON avec des structures de tableau et d'objet unique incohérentes pour la même propriété ?

DDD
Libérer: 2025-01-12 19:11:43
original
976 Les gens l'ont consulté

How Can I Deserialize JSON with Inconsistent Array and Single Object Structures for the Same Property?

Gestion des collections mixtes et des objets uniques dans les données JSON

Les techniques de désérialisation traditionnelles peuvent rencontrer des difficultés lors de la désérialisation de données JSON contenant des tableaux et des objets uniques ayant les mêmes propriétés. Cet article traite du scénario spécifique dans lequel la réponse JSON renvoyée par Facebook présente les données multimédias parfois sous forme d'objets et parfois sous forme de tableaux.

Pour résoudre ce problème, vous pouvez utiliser un convertisseur JSON personnalisé. Ce convertisseur agit comme intermédiaire entre le processus de désérialisation par défaut de JSON.NET et la classe cible. Dans ce cas, la classe cible est FacebookAttachment, qui contient une propriété List appelée Media.

Le convertisseur personnalisé FacebookMediaJsonConverter remplace la méthode ReadJson pour gérer les formats de données incohérents. Plus précisément, il vérifie JsonReader.TokenType et effectue la désérialisation en conséquence :

<code>public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
  if (reader.TokenType == JsonToken.StartArray)
    return serializer.Deserialize<List<facebookmedia>>(reader);
  else
    return null;
}</code>
Copier après la connexion

Si un tableau est rencontré, le convertisseur renverra le tableau désérialisé. Cependant, si un seul objet est rencontré, il renvoie null. En effet, la propriété cible Media attend une liste.

En utilisant ce convertisseur, le processus de désérialisation peut s'adapter à un formatage incohérent dans les réponses JSON. Cependant, il convient de noter que cette méthode ne prend pas en compte toutes les modifications possibles dans la structure JSON et peut ne pas convenir à tous les scénarios.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal