Apakah ada cara mudah untuk mengisi objek C # saya dengan objek JSON yang dilewatkan melalui AJAX?
Ini adalah Objek JSON yang diteruskan ke C # WEBMETHOD dari halaman menggunakan JSON.stringify
{
"user": {
"name": "asdf",
"teamname": "b",
"email": "c",
"players": ["1", "2"]
}
}
C # WebMetod Yang menerima Objek JSON
[WebMethod]
public static void SaveTeam(Object user)
{
}
C # Kelas yang mewakili struktur objek JSON Object yang diteruskan ke WebMethod
public class User
{
public string name { get; set; }
public string teamname { get; set; }
public string email { get; set; }
public Array players { get; set; }
}
Jawaban:
Cara yang baik untuk menggunakan JSON di C # adalah dengan JSON.NET
Mulai Cepat & Dokumentasi API dari JSON.NET - Situs resmi membantu Anda bekerja dengannya.
Contoh cara menggunakannya:
sumber
Karena kita semua suka kode satu baris
Newtonsoft lebih cepat dari serializer skrip java. ... yang satu ini bergantung pada paket Newtonsoft NuGet, yang populer dan lebih baik daripada serializer default.
jika kita memiliki kelas maka gunakan di bawah ini.
tidak ada kelas lalu gunakan dinamis
sumber
Agar opsi Anda tetap terbuka, jika Anda menggunakan .NET 3.5 atau yang lebih baru, berikut ini adalah contoh lengkap yang dapat Anda gunakan langsung dari framework menggunakan Generics. Seperti yang telah disebutkan orang lain, jika bukan hanya objek sederhana, Anda harus benar-benar menggunakan JSON.net.
Kamu akan membutuhkan:
sumber
Dengan contoh kode Anda, Anda tidak perlu melakukan hal lain.
Jika Anda meneruskan string JSON itu ke metode web Anda, itu akan secara otomatis mengurai string JSON dan membuat objek Pengguna yang terisi sebagai parameter untuk metode SaveTeam Anda.
Namun secara umum, Anda dapat menggunakan
JavascriptSerializer
kelas seperti di bawah ini, atau untuk lebih banyak fleksibilitas, gunakan salah satu dari berbagai kerangka kerja Json di luar sana (Jayrock JSON adalah yang bagus) untuk manipulasi JSON yang mudah.sumber
System.Web.Extensions
perakitan dan menambahkanusing System.Web.Script.Serialization
untuk mendapatkan diJavaScriptSerializer
, tetapi begitu Anda melakukannya, ini sepertinya cara terbersih untuk membatalkan deserialisasijson
string Anda ke dalam kelas c # beton.Solusi Sungguh sederhana lainnya adalah menggunakan perpustakaan Newtonsoft.Json:
sumber
2 contoh berikut memanfaatkan keduanya
Contoh 1: menggunakan System.Web.Script.Serialization
Penggunaan: objek JSON ke objek Kustom C #
Contoh 2: menggunakan System.Web.Helpers
Penggunaan: objek JSON ke objek Kustom C #
Kode ini membutuhkan penambahan namespace System.Web.Helpers ditemukan di,
Atau
Semoga ini membantu!
sumber
dynamic
tipe, Anda tidak mendapatkan pengecekan tipe yang benar. Misalnya, jika JSON Anda berisi"Name" : "Ahmed"
dan Anda salah ketik "Nama" dalam kode C # Anda, itu adalah kesalahan runtime (bleh).Informasi lebih lanjut pergi ke tautan berikut http://ishareidea.blogspot.in/2012/05/json-conversion.html
Tentang
DataContractJsonSerializer Class
Anda bisa baca di sini .sumber
Menggunakan JavaScriptSerializer () kurang ketat dari solusi umum yang ditawarkan: public static T Deserialize (string json)
Itu mungkin berguna ketika meneruskan json ke server yang tidak cocok dengan definisi objek yang ingin Anda konversi.
sumber
Dari segi kinerja, saya menemukan serializer ServiceStack sedikit lebih cepat daripada yang lain. Ini kelas JsonSerializer di namespace ServiceStack.Text.
https://github.com/ServiceStack/ServiceStack.Text
ServiceStack tersedia melalui paket NuGet: https://www.nuget.org/packages/ServiceStack/
sumber
JSON.Net adalah taruhan terbaik Anda, tetapi, tergantung pada bentuk objek dan apakah ada dependensi melingkar, Anda bisa menggunakan JavaScriptSerializer atau DataContractSerializer.
sumber
The JSON C # kelas generator pada CodePlex menghasilkan kelas yang bekerja dengan baik dengan NewtonSoftJS.
sumber
JavaScript Serializer: membutuhkan
using System.Web.Script.Serialization;
Serializer Kontrak Data: memerlukan
using System.Runtime.Serialization.Json;
- Tipe T generik harus lebih bersambung pada Kontrak Datasumber
Alih-alih mengirim hanya sebagai objek.
Buat kelas publik properti yang dapat diakses dan mengirim data ke metode Web.
menggunakan nama parameter yang sama dalam panggilan ajax untuk mengirim data.
sumber