jsrosetta

Thư viện chuẩn

JSON

JSON.parse/stringify của Node.js so với encoding/json (Go), serde_json (Rust), Codable (Swift) và Jackson (Java) để map field.

Phiên bản tối thiểu
Node.js ≥ 12.20Go ≥ 1.0Rust ≥ 1.71Swift ≥ 5.0Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

JSON.parse/JSON.stringify của Node.js làm việc trực tiếp với object thường, không cần khai báo shape trước. Go cần một struct với tag json:"..." để encoding/json biết map field nào vào key nào — nhưng việc map này được giải quyết lúc runtime qua reflection: key JSON nào không khớp field sẽ bị bỏ qua âm thầm, và chỉ kiểu dữ liệu của field trong struct được kiểm tra lúc biên dịch, chứ không phải việc map tag ↔ key. Rust không có JSON built-in trong std, nên dùng cặp crate serde/serde_json với derive macro #[derive(Serialize, Deserialize)] — việc map field/key được kiểm tra ngay lúc biên dịch qua macro, chặt hơn Go. Swift dùng protocol Codable có sẵn trong ngôn ngữ, cũng được trình biên dịch tự sinh code map field. Java không có JSON trong thư viện chuẩn — JEP 540 (Simple JSON API) mới đang đề xuất thêm nó dưới dạng incubator (jdk.incubator.json) từ JDK 28, còn ở JDK 25 hiện tại thì chưa có gì cả — nên ví dụ dưới dùng thư viện phổ biến nhất, Jackson.

Parse (unmarshal) và stringify (marshal)

let jsonstr = '{"foo":"bar"}'
 
let parsed = JSON.parse(jsonstr)
console.log(parsed) // { foo: 'bar' }
 
jsonstr = JSON.stringify(parsed)
console.log(jsonstr) // {"foo":"bar"}

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#json