Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencegah Penyahserialisasian Tarikh dalam Json.NET's JObject.Parse?

Bagaimana untuk Mencegah Penyahserialisasian Tarikh dalam Json.NET's JObject.Parse?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 02:34:09724semak imbas

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

Melumpuhkan Penyahserialisasian Tarikh dalam Json.NET dengan JObject.Parse

Json.NET, pustaka pengendalian JSON yang popular, menawarkan pilihan penyahserilan yang fleksibel. Secara lalai, ia cuba menukar sifat dengan nilai DateTime kepada objek .NET DateTime. Walau bagaimanapun, dalam senario tertentu, tingkah laku ini mungkin tidak diingini.

Pertimbangkan kod berikut:

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

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

Object o = j1["time"];

Dalam contoh ini, o ialah rentetan yang mengandungi nilai tarikh-masa asal. Walau bagaimanapun, jika rentetan JSON dipindahkan ke program lain dan dihuraikan kembali menggunakan JObject.Parse, hasilnya berubah.

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

Object o2 = j2["time"];

Kini, o2 ialah objek Tarikh dengan perwakilan berbeza. Percanggahan ini boleh menimbulkan masalah dalam situasi di mana nilai asal perlu dikekalkan.

Penyelesaian

Untuk melumpuhkan penyahserikatan tarikh apabila menggunakan JObject.Parse, Json.NET menyediakan pendekatan alternatif. Daripada menggunakan Parse secara langsung, seseorang boleh menggunakan JsonReader untuk mengkonfigurasi pilihan penghuraian.

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

Dengan menetapkan DateParseHandling kepada None sebelum memuatkan JSON ke dalam JObject, nilai tarikh-masa akan dianggap sebagai rentetan, mengekalkannya format asal.

Perhatikan bahawa penyelesaian ini bergantung pada kaedah Muatan dalaman JObject, iaitu dipanggil oleh Parse. Pendekatan ini menawarkan lebih kawalan ke atas proses penyahserikatan berbanding dengan tingkah laku lalai Parse.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Penyahserialisasian Tarikh dalam Json.NET's JObject.Parse?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn