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