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
Lepaskan: 2024-12-31 02:34:09
asal
693 orang telah melayarinya

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"];
Salin selepas log masuk

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"];
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan