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.net double序列我的對象?的詳細內容。更多資訊請關注PHP中文網其他相關文章!