


Comment résoudre le problème de l'échec de la désérialisation des valeurs d'attribut ?
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);
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);
L'objet obtenu est le suivant :
Découvert lors du débogage :
((Newtonsoft.Json.Linq.JObject)(JsonConvert.DeserializeObject
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>();
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
<strong><span style="font-size: 15px">Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(dataInput);</span></strong><br>
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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.

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 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,

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

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.

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.

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.

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
