JSON Désérialisation - Chaîne Est Automatiquement Converti en Int

Quand je deseiralize le JSON à C# à l'objet ci-dessous, soit en utilisant Newtonsoft explicitement ou par l'intermédiaire du modèle mécanisme de liaison de ASP.NET l'Api Web, la chaîne id valeur est automatiquement converti en int. Je m'attends à ce qu'il lève une exception ou d'élever une erreur car il existe une incompatibilité de type. Est-ce que JSON est censé travailler, dans les specs? Si non, comment puis-je prévenir une telle conversion automatique?

JSON: {"id":"4", "name":"a"}
C# modèle: int id; string name

  • C'est la fonctionnalité offerte par la sérialisation JSON cadres tels que NewtonSoft et les autres. En JSON objet de cette chaîne. C'est le cadre qui prend soin de conversion de type. Il va sûrement lever une erreur si la chaîne json a "id":"somestring". Cadre va essayer de faire de ce type de conversion, tant que la chaîne JSON valeur est dans un format du type de cible.
  • "En objet JSON cette chaîne"... hein? Pas de. {"a":4} et {"a":"4"} sont différents. "a" est un JSON dans un et une chaîne à l'autre. Dans un objet JSON, tout n'est pas une chaîne. Les propriétés peuvent être des chaînes de caractères, des nombres, des autres des autres, ou des tableaux. Interpretting une chaîne de caractères comme un nombre (si elle peut être analysée comme un certain nombre, et le désérialisé type est un nombre qui n'est pas vraiment un problème, de l'OMI. JSON types de sont très de base, donc si vous avez un tableau JSON, c'est bien pour désérialiser comme une Liste, par exemple, si c'est le type de cible. En va de même pour le réglage automatique de la chaîne d'int de conversion (et vice versa).
InformationsquelleAutor John L. | 2017-01-21