Saya memiliki model objek yang terlihat seperti ini:
public MyObjectInJson
{
public long ObjectID {get;set;}
public string ObjectInJson {get;set;}
}
Properti ObjectInJson
ini merupakan versi berseri yang merupakan objek yang berisi daftar bersarang. Untuk saat ini, saya membuat serial daftar MyObjectInJson
secara manual seperti ini:
StringBuilder TheListBuilder = new StringBuilder();
TheListBuilder.Append("[");
int TheCounter = 0;
foreach (MyObjectInJson TheObject in TheList)
{
TheCounter++;
TheListBuilder.Append(TheObject.ObjectInJson);
if (TheCounter != TheList.Count())
{
TheListBuilder.Append(",");
}
}
TheListBuilder.Append("]");
return TheListBuilder.ToString();
Saya ingin tahu apakah saya dapat mengganti kode berbahaya semacam ini dengan JavascriptSerializer
dan mendapatkan hasil yang sama. Bagaimana saya melakukan ini?
Terima kasih.
System.Web.Extensions
untuk menggunakanSystem.Web.Script.Serialization
: stackoverflow.com/a/18746092/1599699 stackoverflow.com/a/19299695/1599699Jawaban:
Jika menggunakan .Net Core 3.0 atau yang lebih baru;
Default untuk menggunakan
System.Text.Json
implementasi parser bawaan.misalnya
Sebagai alternatif, lainnya, opsi yang kurang umum tersedia seperti Utf8Json parser dan Jil : Ini mungkin menawarkan kinerja yang unggul , jika Anda benar-benar membutuhkannya, Anda harus menginstal paket masing-masing.
Jika macet menggunakan .Net Core 2.2 atau sebelumnya;
Default menggunakan Newtonsoft JSON.Net sebagai Parser JSON pilihan pertama Anda.
misalnya
Anda mungkin perlu menginstal paket terlebih dahulu.
Untuk perincian lebih lanjut, lihat dan pilih jawaban yang menjadi sumber informasi ini .
Sebagai referensi saja, ini adalah jawaban asli, bertahun-tahun yang lalu;
sumber
Anda juga dapat menggunakan Json.NET. Cukup unduh di http://james.newtonking.com/pages/json-net.aspx , ekstrak file yang dikompresi dan tambahkan sebagai referensi.
Kemudian, sambungkan daftar (atau objek apa pun yang Anda inginkan) dengan yang berikut:
Pembaruan: Anda juga dapat menambahkannya ke proyek Anda melalui Manajer Paket NuGet (Alat -> Manajer Paket NuGet -> Konsol Manajer Paket):
Dokumentasi: Serializing Collections
sumber
Ada dua cara umum untuk melakukan itu dengan serializers JSON bawaan:
JavaScriptSerializer
DataContractJsonSerializer
Perhatikan, bahwa opsi ini memerlukan definisi kontrak data untuk kelas Anda:
sumber
sumber
.NET sudah mendukung serialisasi Json dasar melalui System.Runtime.Serialization.Json namespace dan kelas DataContractJsonSerializer sejak versi 3.5. Seperti namanya, DataContractJsonSerializer memperhitungkan setiap anotasi data yang Anda tambahkan ke objek Anda untuk membuat hasil akhir Json.
Itu bisa berguna jika Anda sudah memiliki kelas data beranotasi yang ingin Anda serialkan Json ke aliran, seperti yang dijelaskan dalam Cara: Serialize dan Deserialize Data JSON . Ada batasan tetapi cukup baik dan cukup cepat jika Anda memiliki kebutuhan dasar dan tidak ingin menambahkan Pustaka Lain ke proyek Anda.
Kode berikut serializea daftar ke aliran output konsol. Seperti yang Anda lihat itu sedikit lebih verbose daripada Json.NET dan bukan tipe-aman (yaitu tidak ada obat generik)
Di sisi lain, Json.NET menyediakan kontrol yang jauh lebih baik atas cara Anda menghasilkan Json. Ini akan sangat berguna ketika Anda harus memetakan nama-nama yang ramah javascript ke kelas .NET, memformat tanggal ke json dll.
Opsi lain adalah ServiceStack.Text , bagian dari tumpukan ServicStack ..., yang menyediakan serangkaian serialisator yang sangat cepat untuk Json, JSV dan CSV.
sumber
membangun jawaban dari postingan lain .. Saya telah menemukan cara yang lebih umum untuk membuat daftar, menggunakan pencarian dinamis dengan Json.NET versi 12.x
ajakan untuk memproses
atau panggilan untuk memproses ini
sumber