Maison développement back-end Tutoriel C#.Net Comment résoudre le problème de l'échec de la désérialisation des valeurs d'attribut ?

Comment résoudre le problème de l'échec de la désérialisation des valeurs d'attribut ?

Jun 23, 2017 pm 04:22 PM
javascript json 字符串 对象 序列

Introduction : Lorsque je développais l'interface webapi, j'ai rencontré : Lorsqu'une chaîne Json complexe est désérialisée en un objet, l'un des objets d'attribut ne peut pas être sérialisé ?

Utilisation :

InternalRecommendRequestFormModel formData = Newtonsoft.Json.JsonConvert.DeserializeObject<InternalRecommendRequestFormModel>(dataInput);
Copier après la connexion

Parmi eux : InternalRecommendRequestFormModel est un objet complexe et ses propriétés contiennent d'autres objets et propriétés. dataInput est la chaîne JSON transmise par l'interface, qui est l'objet InternalRecommendRequestFormModel renvoyé par une autre interface. Bien sûr, certaines propriétés des données ont changé au cours du processus de transmission. Elles doivent être désérialisées normalement, mais elles sont désérialisées lorsqu'elles sont utilisées. une erreur est signalée et l'un des attributs ne peut pas être sérialisé.

Alors, que devons-nous faire lorsque nous rencontrons une désérialisation aussi complexe en objets ?

Tout d'abord : l'analyse montre que l'erreur est causée par l'échec de la sérialisation d'attributs individuels, donc tant que ces attributs peuvent être effacés ou que le contenu sérialisé de l'attribut peut être supprimé, tout ira bien.

Alors : Comment supprimer certains attributs de la chaîne JSON sérialisée ?

La première chose à laquelle on pense est le remplacement des cordes, l'effacement, l'interception, etc., mais il est facile de faire des erreurs. Pouvons-nous transformer cette chaîne en un objet exploitable (bien sûr pas InternalRecommendRequestFormModel), puis tuer ou effacer un objet, puis le convertir en l'objet souhaité ? En fait, lorsque j’ai pensé pour la première fois à un objet, n’importe quel objet n’est-il pas un objet ?

Commencez à essayer :

object formData = Newtonsoft.Json.JsonConvert.DeserializeObject<object>(dataInput);
Copier après la connexion

L'objet obtenu est le suivant :

Découvert lors du débogage :

((Newtonsoft.Json.Linq.JObject)(JsonConvert.DeserializeObject(dataInput))).ChildrenTokens[46], je peux obtenir la valeur de l'attribut.

En d'autres termes, comme le montre le code ci-dessus, l'objet objet désérialisé est converti en : Objet Newtonsoft.Json.Linq.JObject Cet objet est une classe de base de l'objet JSON fourni par Microsoft. , c'est-à-dire que tant que vous êtes un objet, s'il est sérialisé par json, cela peut vous aider à le désérialiser.

Le code est amélioré à :

InternalRecommendRequestFormModel formData = new InternalRecommendRequestFormModel();Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(dataInput);
obj.Remove("opinions");
formData = obj.ToObject<InternalRecommendRequestFormModel>();
Copier après la connexion

Résumé :

Tant que la chaîne JSON est un objet, lorsque nous désérialisons directement et constatons que certaines valeurs d'attribut dans la chaîne ne répondent pas aux exigences, nous pouvons d'abord convertir l'objet en : JObject, corriger les attributs de l'objet , puis utilisez JObject pour fournir ToObject() puis convertissez-le en objet qui doit être converti

<strong><span style="font-size: 15px">Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(dataInput);</span></strong><br>
Copier après la connexion

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON May 04, 2024 pm 06:15 PM

Les méthodes d'optimisation des performances pour la conversion des tableaux PHP en JSON incluent : l'utilisation d'extensions JSON et de la fonction json_encode() ; l'ajout de l'option JSON_UNESCAPED_UNICODE pour éviter l'échappement de caractères ; l'utilisation de tampons pour améliorer les performances d'encodage de boucle et l'utilisation d'un tiers ; Bibliothèque d'encodage JSON.

Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Apr 02, 2024 pm 03:58 PM

1. Ouvrez d’abord pycharm et accédez à la page d’accueil de pycharm. 2. Créez ensuite un nouveau script python, cliquez avec le bouton droit sur nouveau - cliquez sur fichier python. 3. Entrez une chaîne, code : s="-". 4. Ensuite, vous devez répéter les symboles de la chaîne 20 fois, code : s1=s*20 5. Entrez le code de sortie d'impression, code : print(s1). 6. Enfin, exécutez le script et vous verrez notre valeur de retour en bas : - répété 20 fois.

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Explication détaillée de la méthode de conversion du type int en chaîne en PHP Mar 26, 2024 am 11:45 AM

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Dans le développement PHP, nous rencontrons souvent le besoin de convertir le type int en type chaîne. Cette conversion peut être réalisée de différentes manières. Cet article présentera en détail plusieurs méthodes courantes, avec des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Utilisez la fonction intégrée strval() de PHP. PHP fournit une fonction intégrée strval() qui peut convertir des variables de différents types en types de chaîne. Lorsque nous devons convertir le type int en type chaîne,

Comment les annotations de la bibliothèque Jackson contrôlent-elles la sérialisation et la désérialisation JSON ? Comment les annotations de la bibliothèque Jackson contrôlent-elles la sérialisation et la désérialisation JSON ? May 06, 2024 pm 10:09 PM

Les annotations dans la bibliothèque Jackson contrôlent la sérialisation et la désérialisation JSON : Sérialisation : @JsonIgnore : Ignorer la propriété @JsonProperty : Spécifiez le nom @JsonGetter : Utilisez la méthode get @JsonSetter : Utilisez la méthode set Désérialisation : @JsonIgnoreProperties : Ignorez la propriété @ JsonProperty : Spécifiez le nom @JsonCreator : utilisez le constructeur @JsonDeserialize : logique personnalisée

Comment convertir le tableau de résultats d'une requête MySQL en objet ? Comment convertir le tableau de résultats d'une requête MySQL en objet ? Apr 29, 2024 pm 01:09 PM

Voici comment convertir un tableau de résultats de requête MySQL en objet : Créez un tableau d'objets vide. Parcourez le tableau résultant et créez un nouvel objet pour chaque ligne. Utilisez une boucle foreach pour attribuer les paires clé-valeur de chaque ligne aux propriétés correspondantes du nouvel objet. Ajoute un nouvel objet au tableau d'objets. Fermez la connexion à la base de données.

Comment les fonctions PHP renvoient-elles des objets ? Comment les fonctions PHP renvoient-elles des objets ? Apr 10, 2024 pm 03:18 PM

Les fonctions PHP peuvent encapsuler des données dans une structure personnalisée en renvoyant un objet à l'aide d'une instruction return suivie d'une instance d'objet. Syntaxe : functionget_object():object{}. Cela permet de créer des objets avec des propriétés et des méthodes personnalisées et de traiter les données sous forme d'objets.

Manipulation de chaînes PHP : un moyen pratique de supprimer efficacement les espaces Manipulation de chaînes PHP : un moyen pratique de supprimer efficacement les espaces Mar 24, 2024 am 11:45 AM

Opération de chaîne PHP : une méthode pratique pour supprimer efficacement les espaces Dans le développement PHP, vous rencontrez souvent des situations dans lesquelles vous devez supprimer des espaces d'une chaîne. La suppression des espaces peut rendre la chaîne plus propre et faciliter le traitement et l'affichage ultérieurs des données. Cet article présentera plusieurs méthodes efficaces et pratiques pour supprimer des espaces et joindra des exemples de code spécifiques. Méthode 1 : utilisez la fonction intégrée PHP trim() La fonction intégrée PHP trim() peut supprimer les espaces aux deux extrémités de la chaîne (y compris les espaces, les tabulations, les nouvelles lignes, etc.), ce qui est très pratique et simple. utiliser.

Comment convertir une chaîne en float en PHP Comment convertir une chaîne en float en PHP Mar 27, 2024 pm 12:48 PM

La conversion d'une chaîne en nombre à virgule flottante est une opération courante en PHP et peut être réalisée via des méthodes intégrées. Assurez-vous d’abord que la chaîne est dans un format à virgule flottante légal avant de pouvoir être convertie avec succès en nombre à virgule flottante. Ce qui suit détaillera comment convertir une chaîne en nombre à virgule flottante en PHP et fournira des exemples de code spécifiques. 1. Utiliser un cast (float) En PHP, le moyen le plus simple de convertir une chaîne en nombre à virgule flottante est d'utiliser un cast. La façon de forcer la conversion est d'ajouter (float) avant la chaîne, et PHP la convertira automatiquement

See all articles