0Pricing
Learn Rust Coding · Pelajaran

Bekerja dengan JSON

serde_json

Bekerja dengan JSON adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. 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 Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Crate serde_json

serde_json adalah implementasi format JSON untuk serde. Crate ini menyediakan fungsi untuk mengonversi nilai Rust dan teks JSON secara timbal balik.

  • to_string / from_str untuk teks
  • Value untuk JSON dinamis

Struct menjadi string JSON

serde_json::to_string menserialisasi nilai Serialize apa pun menjadi string JSON.

use serde::Serialize;

#[derive(Serialize)]
struct User { id: u32, name: String }

fn main() {
    let u = User { id: 1, name: "Alice".to_string() };
    let json = serde_json::to_string(&u).unwrap();
    println!("{}", json);
}

String JSON menjadi struct

serde_json::from_str mengurai JSON menjadi nilai bertipe, dan mengembalikan Result agar Anda dapat menangani masukan yang tidak valid.

use serde::Deserialize;

#[derive(Deserialize, Debug)]
struct User { id: u32, name: String }

fn main() {
    let data = r#"{"id":1,"name":"Alice"}"#;
    let u: User = serde_json::from_str(data).unwrap();
    println!("{:?}", u);
}

Pencetakan rapi

Gunakan to_string_pretty untuk JSON berindentasi yang mudah dibaca manusia, berguna untuk file konfigurasi dan penelusuran kesalahan.

use serde::Serialize;

#[derive(Serialize)]
struct Cfg { debug: bool, level: u8 }

fn main() {
    let c = Cfg { debug: true, level: 3 };
    println!("{}", serde_json::to_string_pretty(&c).unwrap());
}

Makro json!

Bangun JSON secara langsung dengan makro json!, yang menghasilkan Value tanpa perlu mendefinisikan struct.

use serde_json::json;

fn main() {
    let v = json!({
        "name": "Alice",
        "roles": ["admin", "user"]
    });
    println!("{}", v);
}

Tipe Value

serde_json::Value adalah enum yang merepresentasikan simpul JSON apa pun: null, boolean, angka, string, larik, atau objek. Gunakan ini saat bentuknya tidak diketahui.

use serde_json::Value;

fn main() {
    let data = r#"{"name":"Bob","age":30}"#;
    let v: Value = serde_json::from_str(data).unwrap();
    println!("{}", v["name"]);
    println!("{}", v["age"]);
}

Membaca Value dengan aman

Akses indeks mengembalikan Value; gunakan metode pengakses seperti as_str atau as_i64 yang mengembalikan Option untuk membaca data bertipe dengan aman.

use serde_json::Value;

fn name_of(v: &Value) -> Option<&str> {
    v.get("name")?.as_str()
}

Memodelkan akses JSON dalam Rust biasa

Membaca nilai berdasarkan kunci, dengan nilai cadangan saat kunci tidak ada, menyerupai cara Anda mengkueri objek Value. Berikut contohnya dengan HashMap.

use std::collections::HashMap;

fn main() {
    let mut obj: HashMap<&str, &str> = HashMap::new();
    obj.insert("name", "Alice");
    let name = obj.get("name").copied().unwrap_or("unknown");
    let city = obj.get("city").copied().unwrap_or("unknown");
    println!("name={} city={}", name, city);
}

Byte dan penulis

Untuk performa, to_vec menserialisasi menjadi byte, sedangkan to_writer mengalirkannya langsung ke objek io::Write apa pun, seperti file atau soket.

use serde::Serialize;

#[derive(Serialize)]
struct Msg { text: String }

fn to_bytes(m: &Msg) -> Vec<u8> {
    serde_json::to_vec(m).unwrap()
}

Menangani kesalahan penguraian

from_str mengembalikan Result. Cocokkan kesalahannya untuk memberikan pesan yang membantu pengguna alih-alih menyebabkan program panik.

use serde::Deserialize;

#[derive(Deserialize)]
struct User { id: u32 }

fn parse(s: &str) -> String {
    match serde_json::from_str::<User>(s) {
        Ok(u) => format!("id {}", u.id),
        Err(e) => format!("invalid JSON: {}", e),
    }
}

Mengonversi antara Value dan struct

serde_json::from_value dan to_value mengonversi antara struct bertipe dan Value dinamis saat Anda memerlukan keduanya.

use serde::Deserialize;
use serde_json::json;

#[derive(Deserialize)]
struct User { name: String }

fn main() {
    let v = json!({"name": "Eve"});
    let u: User = serde_json::from_value(v).unwrap();
    println!("{}", u.name);
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang bekerja dengan JSON.

Rangkuman

Anda telah mempelajari penanganan JSON dengan serde_json:

  • to_string / from_str mengonversi struct dan teks JSON
  • to_string_pretty memformatnya agar mudah dibaca
  • Makro json! dan Value menangani JSON dinamis
  • Gunakan pengakses dan Result untuk membaca dan mengurai dengan aman

Selanjutnya: menyesuaikan serialisasi dengan atribut field.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Bekerja dengan JSON” gratis?

Ya — teks lengkap “Bekerja dengan JSON” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Bekerja dengan JSON”?

serde_json Kamu berlatih Learn Rust Coding 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 Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding 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 4.

Berapa lama pelajaran “Bekerja dengan JSON” 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 Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding 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

  1. Serialisasi dan Deserialisasi
  2. Bekerja dengan JSON
  3. Serialisasi Kustom
  4. Format Lain
← Kembali ke Learn Rust Coding