Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Bikin JSON Lebih Rapi di Go dengan MarshalIndent

1 min read .
Bikin JSON Lebih Rapi di Go dengan MarshalIndent

JSON itu format yang simpel, tapi kalau datanya panjang dan ditulis dalam satu baris… pusing juga bacanya 🤯. Untungnya, di Go ada cara gampang buat bikin JSON lebih rapi: pakai pretty-printing.

Dengan pretty-print, JSON kita dikasih indentasi dan baris baru, jadi jauh lebih enak dibaca. Cocok banget buat debugging, ngecek API response, atau sekadar bikin output keliatan lebih manusiawi.

1. json.MarshalIndent: Jalan Paling Cepat

Go punya fungsi bawaan json.MarshalIndent buat nge-format JSON biar rapi.

Contoh:

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	data := map[string]interface{}{
		"name": "Alice",
		"age":  30,
		"address": map[string]string{
			"street": "123 Main St",
			"city":   "Wonderland",
		},
		"hobbies": []string{"reading", "hiking", "coding"},
	}

	prettyJSON, err := json.MarshalIndent(data, "", "    ")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println(string(prettyJSON))
}

MarshalIndent butuh tiga argumen: data, prefix (biasanya kosong ""), dan indentasi (misalnya empat spasi " ").

2. Jangan Lupa Cek Error

Karena MarshalIndent bisa gagal (misalnya data nggak bisa diubah ke JSON), kita wajib cek error-nya.

prettyJSON, err := json.MarshalIndent(data, "", "    ")
if err != nil {
    fmt.Println("Error marshalling JSON:", err)
    return
}

Keliatan sepele, tapi penting banget buat program yang aman.

3. Pretty-Print JSON dari File

Mau rapiin JSON yang datang dari file? Bisa juga.

fileContent, err := os.ReadFile("data.json")
if err != nil {
    log.Fatalf("Error reading file: %v", err)
}

var data interface{}
if err := json.Unmarshal(fileContent, &data); err != nil {
    log.Fatalf("Error unmarshalling JSON: %v", err)
}

prettyJSON, _ := json.MarshalIndent(data, "", "    ")
fmt.Println(string(prettyJSON))

Triknya: Unmarshal dulu ke interface{}, baru di-marshal ulang dengan indentasi.

4. Buat Output API Lebih Cakep

Kalau lagi bikin API, kadang enak juga balikin JSON yang sudah di-pretty-print biar gampang dibaca saat debug.

func handler(w http.ResponseWriter, r *http.Request) {
	data := map[string]interface{}{
		"status": "success",
		"data": map[string]string{
			"message": "Hello, World!",
		},
	}

	prettyJSON, err := json.MarshalIndent(data, "", "    ")
	if err != nil {
		http.Error(w, "Error marshalling JSON", http.StatusInternalServerError)
		return
	}

	w.Header().Set("Content-Type", "application/json")
	w.Write(prettyJSON)
}

Kesimpulan

  • Butuh JSON yang lebih gampang dibaca? → pakai json.MarshalIndent.
  • Bisa dipakai langsung dari data, file, sampai respons API.
  • Jangan lupa selalu cek error biar program nggak gampang crash.

Satu baris tambahan bisa bikin JSON yang tadinya bikin sakit mata jadi nyaman dibaca.

Lihat Juga

chevron-up