JSON.NET 雙重序列化難題
使用 JSON.NET 序列化對象時,可能會遇到一個奇怪的問題:對像被雙重序列化。這會導致響應中 JSON 數據被雙引號包裹,嵌入的引號也被轉義。
根本原因
問題根源在於序列化方法。如果您像示例中那樣使用 JsonConvert.SerializeObject(instance)
,則會對對象進行兩次序列化。這是因為您首先將其序列化為字符串,然後 API 控制器將其進一步序列化為 JavaScript 字符串字面量。
解決方案
要解決此問題,只需直接返回對象:
public IEnumerable GetFoobars()
{
var foobars = ...;
return foobars;
}
替代方法
或者,您可以選擇將自定義轉換器直接添加到 Web API 的默認 HttpConfiguration
中:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());
其他提示
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3