JSON dengan System.Text.Json (opt-in, konverter)
JSON yang sesuai untuk C# 6: gunakan DataContractJsonSerializer dengan [DataContract]/[DataMember] (anggota opt-in) dan penyesuaian penamaan sederhana yang menyerupai konverter.
JSON dengan System.Text.Json (opt-in, konverter) adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.
Rencana JSON di C# 6
Tujuan: Melakukan serialisasi/deserialisasi JSON tanpa paket eksternal.
- Gunakan DataContractJsonSerializer
- Sertakan anggota secara eksplisit melalui DataMember
- Sesuaikan nama dengan Name=
- Tulis/baca dari berkas dengan aman
Model dengan penyertaan eksplisit
Model dengan penyertaan eksplisit: tandai tipe dengan DataContract dan hanya anggota yang disertakan dengan DataMember. Gunakan Name= untuk mengatur kunci JSON.
using System;
using System.Runtime.Serialization;
[DataContract] // opt-in: only [DataMember] will be serialized
public sealed class User
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
// Not included: no DataMember
public string InternalNote { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
User u = new User { Id = 7, Name = "Ada", InternalNote = "hidden" };
Console.WriteLine("Ready to serialize: " + u.Name);
}
}
Serialisasi ke JSON
Buat DataContractJsonSerializer, tulis ke aliran data, lalu enkode sebagai string UTF-8.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
[DataContract]
public sealed class User
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
public string InternalNote { get; set; }
}
public class Program
{
public static string ToJson(User u)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, u);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
public static void Main(string[] args)
{
User u = new User { Id = 1, Name = "Ada", InternalNote = "not saved" };
string json = ToJson(u);
Console.WriteLine(json); // {"id":1,"name":"Ada"}
}
}
Deserialisasi dari JSON
Lakukan deserialisasi dengan membaca dari aliran data. Hanya anggota DataMember yang diisi.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
[DataContract]
public sealed class User
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
}
public class Program
{
public static User FromJson(string json)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
byte[] bytes = Encoding.UTF8.GetBytes(json);
using (MemoryStream ms = new MemoryStream(bytes))
{
return (User)ser.ReadObject(ms);
}
}
public static void Main(string[] args)
{
string json = "{\"id\":42,\"name\":\"Bob\"}";
User u = FromJson(json);
Console.WriteLine(u.Id + " - " + u.Name);
}
}
Simpan/muat berkas JSON
Simpan JSON secara persisten dengan FileStream dalam blok using. Ini mencerminkan aplikasi nyata: pengaturan, data kecil, dan sebagainya.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
[DataContract]
public sealed class Settings
{
[DataMember(Name = "theme")]
public string Theme { get; set; }
[DataMember(Name = "notifications")]
public bool Notifications { get; set; }
}
public class Program
{
public static void Save(string path, Settings s)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Settings));
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
ser.WriteObject(fs, s);
}
}
public static Settings Load(string path)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Settings));
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
return (Settings)ser.ReadObject(fs);
}
}
public static void Main(string[] args)
{
string path = "settings.json";
Save(path, new Settings { Theme = "dark", Notifications = true });
Settings loaded = Load(path);
Console.WriteLine(loaded.Theme + " / " + loaded.Notifications);
}
}
Penamaan & konversi sederhana
Sesuaikan:
- Gunakan Name= dalam DataMember untuk memetakan nama properti (misalnya, user_name)
- Untuk enumerasi, tandai setiap nilai dengan EnumMember
- Untuk format khusus (tanggal, angka), ubah menjadi properti string (pemetaan manual) dalam C# 6
Aturan penyertaan eksplisit untuk JSON
Ringkasan
Ringkasan: Gunakan DataContractJsonSerializer pada C# 6, sertakan anggota melalui DataMember, sesuaikan nama dengan Name=, lalu baca/tulis menggunakan pola aliran data yang aman.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “JSON dengan System.Text.Json (opt-in, konverter)” gratis?
Ya — teks lengkap “JSON dengan System.Text.Json (opt-in, konverter)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “JSON dengan System.Text.Json (opt-in, konverter)”?
JSON yang sesuai untuk C# 6: gunakan DataContractJsonSerializer dengan [DataContract]/[DataMember] (anggota opt-in) dan penyesuaian penamaan sederhana yang menyerupai konverter. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.
Berapa lama pelajaran “JSON dengan System.Text.Json (opt-in, konverter)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- System.IO (jalur, aliran)
- JSON dengan System.Text.Json (opt-in, konverter)
- Pola penguraian CSV sederhana