首頁 >後端開發 >C++ >為什麼json.net double序列我的對象?

為什麼json.net double序列我的對象?

DDD
DDD原創
2025-01-24 22:18:17522瀏覽

Why is JSON.NET Double Serializing My Objects?

JSON.NET 雙重序列化難題

使用 JSON.NET 序列化物件時,可能會遇到一個奇怪的問題:物件被雙重序列化。這會導致回應中 JSON 資料被雙引號包裹,嵌入的引號也被轉義。

根本原因

問題根源在於序列化方法。如果您像範例中那樣使用 JsonConvert.SerializeObject(instance),則會對物件進行兩次序列化。這是因為您首先將其序列化為字串,然後 API 控制器將其進一步序列化為 JavaScript 字串字面量。

要解決此問題,只需直接回傳物件:

<code class="language-csharp">public IEnumerable<foobar> GetFoobars()
{
    var foobars = ...;
    return foobars;
}</code>

替代方法

或者,您可以選擇將自訂轉換器直接新增至 Web API 的預設 HttpConfiguration 中:

<code class="language-csharp">config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());</code>

其他提示

  • 確保正確實作自訂轉換器。
  • 考慮使用自訂 JSON 格式化程序,而不是修改預設值。
  • 請參考「ASP.NET Web API 中的 JSON 和 XML 序列化」以取得更多指引。

以上是為什麼json.net double序列我的對象?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn