Nhà phát triển / JSON

JSON sang struct Go

Dán một mẫu JSON để nhận định nghĩa struct Go với tên trường được export, các từ viết tắt theo quy ước của linter Go và json tag, sẵn sàng dán vào mã của bạn.

JSON sang struct Go: Bộ chuyển đổi đọc JSON trong trình duyệt và tạo một struct cho mỗi đối tượng. Các khóa được chuyển thành tên CamelCase được export, với những từ viết tắt như ID, URL và HTTP viết hoa theo khuyến nghị của golint. Mỗi trường vẫn giữ khóa ban đầu trong json tag, với định dạng giống như gofmt. Các đối tượng trong một mảng được gộp lại, vì vậy khóa bị thiếu trong một số đối tượng sẽ nhận omitempty, còn khóa đôi khi có giá trị null sẽ trở thành con trỏ. Các số nguyên trở thành int64, trừ khi cùng vị trí đó xuất hiện số thập phân; khi ấy kiểu sẽ là float64. Chạy 100% cục bộ trong trình duyệt của bạn, không có tệp nào được tải lên máy chủ.

Lượt chạy
Trong trình duyệt của bạn
Chi phí
Miễn phí · không cần đăng ký
Trạng thái khả dụng
Sẵn sàng sử dụng
JSON sang struct GoXử lý cục bộ

Chạy hoàn toàn trong trình duyệt của bạn

Go

type User struct {
	ID        int64    `json:"id"`
	UserName  string   `json:"user_name"`
	AvatarURL string   `json:"avatar_url"`
	Score     float64  `json:"score"`
	Tags      []string `json:"tags"`
	Address   Address  `json:"address"`
}

type Address struct {
	City    string `json:"city"`
	ZipCode string `json:"zip_code"`
}

Các khóa bị thiếu trong một số đối tượng của mảng sẽ được thêm omitempty; các khóa đôi khi có giá trị null sẽ trở thành con trỏ. Hãy đối chiếu các kiểu dữ liệu với tài liệu API của bạn: một mẫu chỉ hiển thị những gì nó chứa.

Từ mẫu dữ liệu đến kiểu dữ liệu

Go giải mã JSON thành các struct bằng encoding/json. Thư viện này ghép từng khóa với một trường dựa trên thẻ json, hoặc dựa vào tên mà không phân biệt chữ hoa chữ thường khi không có thẻ. Chỉ các trường được xuất, tức là bắt đầu bằng chữ in hoa, mới được điền; đó là lý do mọi trường ở đây đều viết hoa chữ cái đầu và giữ khóa ban đầu trong thẻ của mình.

Một mẫu chỉ cho thấy những gì nó chứa. Một danh sách người dùng trong đó một người không có email cho bộ chuyển đổi biết rằng email là tùy chọn; một đối tượng đơn lẻ thì không thể cho biết điều đó. Khi có thể, hãy dán nhiều đối tượng đại diện vào một mảng và kiểm tra kết quả với tài liệu của API. Công cụ định dạng JSON giúp bạn nhận ra cấu trúc của một phản hồi dài trước tiên.

Ngôn ngữ và schema khác

Cùng một mẫu có thể trở thành các interface TypeScript bằng bộ chuyển đổi JSON sang TypeScript, phù hợp với giao diện trước đọc cùng API, hoặc trở thành JSON Schema để xác thực dữ liệu tải lên tại ranh giới hệ thống.

Cách sử dụng

  1. Dán một đối tượng hoặc mảng JSON, chẳng hạn như phản hồi API.
  2. Đặt tên cho kiểu cấp cao nhất và chọn struct riêng hoặc struct lồng nhau.
  3. Sao chép mã Go.

Quyền riêng tư và giới hạn

JSON của bạn được chuyển đổi trong trình duyệt và không bao giờ được tải lên.

Công cụ liên quan

Câu hỏi thường gặp

Tại sao user_id lại được gọi là UserID thay vì UserId?

Quy ước Go viết các từ viết tắt với cùng một kiểu chữ, vì vậy ta có UserID, APIKey và AvatarURL. Bộ chuyển đổi sử dụng danh sách các từ viết tắt của golint, công cụ linter đã phổ biến quy tắc này.

Khi nào một trường nhận omitempty hoặc trở thành con trỏ?

Khi mẫu là một mảng các đối tượng và một khóa bị thiếu trong một số đối tượng, trường đó sẽ nhận omitempty để khi marshal, trường sẽ được bỏ qua nếu rỗng. Khi một khóa có giá trị null trong một số đối tượng, trường đó sẽ trở thành con trỏ để nil có thể đại diện cho null. Bạn cũng có thể thêm omitempty vào mọi trường.

Tại sao lại là int64 và float64?

JSON chỉ có một kiểu số duy nhất. Giá trị được viết không có dấu thập phân sẽ trở thành int64, còn giá trị có phần lẻ sẽ trở thành float64. Nếu một ID có thể lớn hơn 2^53 hoặc thực chất là một chuỗi được dùng như số, hãy tự đổi kiểu: mẫu chỉ hiển thị những giá trị mà nó chứa.

Điều gì xảy ra với null hoặc các mảng rỗng?

Khi không có đủ thông tin, một trường luôn có giá trị null hoặc một mảng rỗng sẽ nhận kiểu any (interface{}), kiểu này chấp nhận mọi giá trị. Khi biết kiểu thực tế, hãy thay thế kiểu đó.

Công cụ miễn phí · trong trình duyệt của bạn lượt chạy · không cần tài khoản