Problème de double sérialisation JSON.NET
Lorsque vous utilisez JSON.NET pour sérialiser des objets, vous pouvez rencontrer un problème étrange : l'objet est double-sérialisé. Cela entraîne l'encapsulation des données JSON dans la réponse entre guillemets doubles et l'échappement des guillemets incorporés.
Cause profonde
La racine du problème réside dans la méthode de sérialisation. Si vous utilisez JsonConvert.SerializeObject(instance)
comme dans l'exemple, l'objet sera sérialisé deux fois. En effet, vous le sérialisez d'abord en chaîne, puis le contrôleur API le sérialise ensuite en un littéral de chaîne JavaScript.
Solution
Pour résoudre ce problème, retournez simplement l'objet directement :
<code class="language-csharp">public IEnumerable<foobar> GetFoobars() { var foobars = ...; return foobars; }</code>
Méthodes alternatives
Vous pouvez également choisir d'ajouter un convertisseur personnalisé directement à la valeur par défaut de l'API Web HttpConfiguration
:
<code class="language-csharp">config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());</code>
Autres conseils
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!