Maison >développement back-end >C++ >Pourquoi ma sérialisation JSON.NET produit-elle des cordes JSON à double codage?
Lors de l'utilisation de la méthode JsonConvert.SerializeObject
de JSON.NET, l'objet est double-sérialisé, ce qui entraîne une réponse JSON incorrecte. La réponse est entourée de guillemets et les guillemets intégrés sont échappés, ce qui entraîne un JSON non valide.
Ce problème se produit généralement lors du renvoi d'une chaîne d'un contrôleur WebAPI qui a été sérialisée à l'aide de JSON.NET. Le contrôleur sérialise ensuite en outre la chaîne en une chaîne littérale JavaScript, ce qui entraîne une double sérialisation.
Pour résoudre ce problème, renvoyez directement l'objet lui-même au lieu de la chaîne. En faisant cela, le contrôleur API gérera la sérialisation en fonction des paramètres de la requête, permettant à JSON.NET de sérialiser correctement l'objet. Cela élimine la double sérialisation et garantit que la réponse JSON générée est valide.
<code class="language-csharp">// 原代码:双重序列化 public string GetFoobars() { var foobars = ...; return JsonConvert.SerializeObject(foobars); } // 更新后的代码:直接返回对象 public IEnumerable<Foobar> GetFoobars() { var foobars = ...; return foobars; }</code>
En mettant à jour le type de retour avec le type réel de l'objet en cours de sérialisation, le contrôleur sérialisera le résultat de manière appropriée, résolvant ainsi le problème de double sérialisation.
Pour plus d'informations sur la sérialisation dans WebAPI, veuillez vous référer aux ressources suivantes :
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!