Contoh JSON dalam 7 Bahasa: JavaScript, Python, Go, Rust, PHP, Java, C#
JSON bersifat universal, tetapi setiap bahasa menanganinya secara berbeda. Ini adalah referensi berdampingan untuk parsing, serialisasi, dan penanganan error di tujuh bahasa populer.
JavaScript
JavaScript adalah rumah native JSON. Lakukan parsing dengan JSON.parse, serialisasi dengan JSON.stringify, dan selalu bungkus parsing dalam try/catch.
// Parse a JSON string into an object (always guard with try/catch)
let data;
try {
data = JSON.parse('{"name": "Alice", "age": 30}');
console.log(data.name); // "Alice"
} catch (err) {
console.error("Invalid JSON:", err.message);
}
// Serialize an object back to JSON
const json = JSON.stringify(data, null, 2);
// Fetch JSON from an API (res.json() rejects on invalid JSON)
const res = await fetch("/api/users/1");
const user = await res.json(); // parsed automaticallyPython
Modul json bawaan Python memetakan object JSON ke dict dan array ke list. Gunakan json.loads (string → object) dan json.dumps (object → string).
import json
# Parse JSON string into a dict
data = json.loads('{"name": "Alice", "age": 30}')
# Serialize a dict to a pretty JSON string
text = json.dumps(data, indent=2, ensure_ascii=False)
# Read/write a JSON file
with open("data.json", encoding="utf-8") as f:
data = json.load(f)Go
Paket encoding/json milik Go memetakan JSON ke struct melalui tag. Gunakan json.Marshal untuk serialisasi dan json.Unmarshal untuk parsing, dengan struct tag mengatur nama field.
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
// Struct → JSON
b, _ := json.Marshal(User{Name: "Alice", Age: 30})
// JSON → struct
var u User
_ = json.Unmarshal([]byte(`{"name":"Bob","age":25}`), &u)Rust
Rust menggunakan crate serde dan serde_json untuk (de)serialisasi yang aman tipe dan tanpa biaya (zero-cost). Derive Serialize/Deserialize pada sebuah struct dan serde_json menangani sisanya — termasuk pesan error yang presisi dengan baris dan kolom saat parsing gagal.
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
name: String,
age: u8,
}
fn main() -> Result<(), serde_json::Error> {
// JSON → struct
let u: User = serde_json::from_str(r#"{"name":"Alice","age":30}"#)?;
// Struct → JSON (pretty-printed)
let json = serde_json::to_string_pretty(&u)?;
println!("{}", json);
Ok(())
}PHP
PHP memiliki json_encode/json_decode native tanpa dependensi. Berikan true sebagai argumen kedua ke json_decode untuk mendapatkan array asosiatif alih-alih objek stdClass, dan selalu periksa json_last_error() — json_decode mengembalikan null saat gagal, yang juga merupakan nilai JSON yang valid.
<?php
// PHP array → JSON
$json = json_encode(["name" => "Alice", "age": 30],
JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
// JSON → PHP array
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "JSON error: " . json_last_error_msg();
}Java
Java umumnya menggunakan ObjectMapper dari Jackson. Record (Java 16+) menghasilkan DTO yang bersih tanpa boilerplate — Jackson mengikatnya secara langsung, termasuk penanganan properti yang tidak dikenal melalui configure.
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature;
record User(String name, int age) {}
ObjectMapper mapper = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// JSON → record
User user = mapper.readValue("{\"name\":\"Alice\",\"age\":30}", User.class);
// Record → JSON
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);C#
C# modern menggunakan System.Text.Json (bawaan .NET). Atribut seperti JsonPropertyName memetakan konvensi penamaan JSON ke properti PascalCase, dan JsonSerializerOptions mengatur penggunaan huruf pada output.
using System.Text.Json;
using System.Text.Json.Serialization;
public class User
{
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("age")]
public int Age { get; set; }
}
// JSON → object
var user = JsonSerializer.Deserialize<User>(
"{\"name\":\"Alice\",\"age\":30}")!;
// Object → JSON (camelCase to match JSON conventions)
var options = new JsonSerializerOptions {
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
string json = JsonSerializer.Serialize(user, options);Praktik terbaik universal
Selalu tangani error parsing — JSON yang rusak akan membuat kode tak terlindungi crash. Untuk API produksi, validasi terhadap JSON Schema sebelum diproses. Utamakan struct/class bertipe daripada map generik di bahasa compiled. Pretty-print saat pengembangan, minify saat produksi.
FAQ
- Bahasa mana yang memiliki parser JSON tercepat?
- Bahasa compiled (Go, Rust, Java dengan Jackson, C# dengan System.Text.Json) umumnya mengungguli bahasa interpreted. Untuk sebagian besar aplikasi, perbedaannya dapat diabaikan dibandingkan dengan biaya jaringan dan database.
- Apakah saya harus menggunakan struct bertipe atau map generik?
- Struct/class bertipe menangkap ketidaksesuaian schema saat compile time dan memberi Anda autocomplete. Gunakan map generik hanya ketika bentuknya benar-benar dinamis atau tidak diketahui.
Artikel terkait
Apa itu JSON? Panduan Lengkap untuk Pemula →
JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca manusia dan mudah diurai mesin. Pelajari sintaks, tipe data, dan struktur yang menjadi fondasi API modern.
Sejarah JSON: Dari Tahun 2000 hingga Menjadi Standar Industri →
Telusuri JSON dari ide Douglas Crockford tahun 2001, diadopsi oleh Yahoo, hingga menjadi standar ECMA-404 yang menggerakkan 90% API modern.
Panduan Lengkap JSON Schema (Draft 7) →
JSON Schema adalah standar untuk mendeskripsikan dan memvalidasi struktur JSON. Pelajari keyword inti, bangun schema API nyata, dan terapkan praktik terbaik.