Tutorial

Working with JSON in Different Programming Languages

January 10, 2025 15 min read

JavaScript/TypeScript

// Built-in support
const obj = JSON.parse('{"name":"John"}');
const str = JSON.stringify(obj);

// TypeScript with types
interface User {
  name: string;
  age: number;
}
const user: User = JSON.parse(jsonString);

Python

import json

# Parse JSON
data = json.loads('{"name":"John"}')

# Generate JSON
json_str = json.dumps(data, indent=2)

# Read from file
with open('data.json') as f:
    data = json.load(f)

Java

// Using Gson
Gson gson = new Gson();
User user = gson.fromJson(jsonString, User.class);
String json = gson.toJson(user);

// Using Jackson
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonString, User.class);
String json = mapper.writeValueAsString(user);

C#

using System.Text.Json;

// Parse
var person = JsonSerializer.Deserialize<Person>(jsonString);

// Generate
var json = JsonSerializer.Serialize(person,
    new JsonSerializerOptions { WriteIndented = true });

Go

import "encoding/json"

// Parse
var user User
json.Unmarshal([]byte(jsonString), &user)

// Generate
jsonBytes, _ := json.Marshal(user)
jsonString := string(jsonBytes)

Rust

use serde_json;

// Parse
let user: User = serde_json::from_str(&json_string)?;

// Generate
let json = serde_json::to_string(&user)?;

Best Practices by Language

  • JavaScript: Always use try-catch with JSON.parse()
  • Python: Use json.load() for files, json.loads() for strings
  • Java: Prefer Jackson for performance, Gson for simplicity
  • C#: Use System.Text.Json for modern apps
  • Go: Use struct tags for field mapping
  • Rust: Leverage serde for type safety

Back to Blog