首頁 > 後端開發 > C++ > 如何防止 Json.NET 的 JObject.Parse 中的日期反序列化?

如何防止 Json.NET 的 JObject.Parse 中的日期反序列化?

Mary-Kate Olsen
發布: 2024-12-31 02:34:09
原創
702 人瀏覽過

How to Prevent Date Deserialization in Json.NET's JObject.Parse?

使用JObject.Parse 停用Json.NET 中的日期反序列化

Json.NET 是一個流行的JSON 處理庫,提供靈活的反序列化選項。預設情況下,它會嘗試將具有 DateTime 值的屬性轉換為 .NET DateTime 物件。但是,在某些情況下,這種行為可能是不可取的。

請考慮以下程式碼:

string s = "2012-08-08T01:54:45.3042880+00:00";

JObject j1 = JObject.FromObject(new { time = s });

Object o = j1["time"];
登入後複製

在此範例中,o 是包含原始日期時間值的字串。但是,如果將 JSON 字串傳輸到另一個程式並使用 JObject.Parse 解析回來,結果就會改變。

JObject j2 = JObject.Parse(j1.ToString());

Object o2 = j2["time"];
登入後複製

現在,o2 是具有不同表示形式的 Date 物件。在需要保留原始值的情況下,這種差異可能會出現問題。

解決方案

要在使用 JObject.Parse 時停用日期反序列化,Json.NET 提供了一個替代方法。可以使用 JsonReader 來配置解析選項,而不是直接使用 Parse。

using(JsonReader reader = new JsonTextReader(new StringReader(j1.ToString()))) {
    reader.DateParseHandling = DateParseHandling.None;
    JObject o = JObject.Load(reader);
}
登入後複製

透過在將 JSON 載入到 JObject 之前將 DateParseHandling 設為 None,日期時間值將被視為字串,保留其值原始格式。

請注意,此解決方案依賴 JObject 的內部 Load 方法,該方法由 Parse 呼叫。與 Parse 的預設行為相比,這種方法可以更好地控制反序列化過程。

以上是如何防止 Json.NET 的 JObject.Parse 中的日期反序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板