DevToolPal
VI

JSON sang struct Go

Tạo struct Go kèm thẻ json từ mẫu JSON, hỗ trợ struct lồng nhau đặt tên riêng hoặc nội tuyến và omitempty.

Chạy cục bộ, không bao giờ tải lên

Tùy chọn

Đối tượng lồng nhau

JSON

0 ký tự · 0 B

Go

0 ký tự · 0 B

Công cụ làm gì

Công cụ chuyển JSON sang Go đọc một mẫu JSON và viết định nghĩa struct Go kèm thẻ json, sẵn sàng cho encoding/json. Dán phản hồi từ API bạn đang gọi để nhận các kiểu dùng được ngay với json.Unmarshal, không phải tự viết từng trường và thẻ.

Công cụ xem xét mọi giá trị trong mẫu. Đối tượng lồng nhau thành struct riêng, mọi phần tử của mảng được gộp thành một kiểu phần tử, và các trường vắng mặt ở một số phần tử hoặc đôi khi là null được nhận diện là tùy chọn. Kết quả được căn chỉnh như cách gofmt định dạng.

Cách sử dụng

  1. Dán JSON vào ô nhập, tải lên tệp .json hoặc bấm Ví dụ.
  2. Đặt tên kiểu gốc và chọn cách viết đối tượng lồng nhau, trường nào được thêm omitempty và trường có thể null có dùng con trỏ hay không.
  3. Sao chép mã Go hoặc tải xuống dưới dạng tệp .go, rồi thêm dòng package của bạn.

JSON không hợp lệ được báo kèm dòng và cột gây lỗi.

Ví dụ

JSON này:

{ "id": 7, "user_name": "ada", "tags": ["admin"], "profile": { "avatar_url": "https://example.com/a.png" } }

trở thành các struct sau:

type Root struct {
	ID       int      `json:"id"`
	UserName string   `json:"user_name"`
	Tags     []string `json:"tags"`
	Profile  Profile  `json:"profile"`
}

type Profile struct {
	AvatarURL string `json:"avatar_url"`
}

Mẹo

  • Một mẫu chỉ thể hiện những gì nó chứa. Nếu một giá trị có thể là số hoặc chuỗi, hãy đưa vào cả hai, hoặc đặt nhiều mẫu vào một mảng để chúng được gộp.
  • Dấu thời gian đến dưới dạng chuỗi. Hãy tự đổi kiểu thành time.Time khi định dạng là RFC 3339.
  • Các đối tượng có trường giống hệt nhau dùng chung một struct, giúp kết quả ngắn gọn khi cùng một cấu trúc xuất hiện ở nhiều nơi.
  • Bạn cũng viết TypeScript? Công cụ tạo JSON sang TypeScript dùng cùng cách suy luận để tạo interface.

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

› Tên trường được chọn thế nào?

Mỗi khóa JSON được chuyển thành tên Go xuất khẩu dạng PascalCase, các từ viết tắt phổ biến viết hoa toàn bộ như golint mong đợi, nên user_id thành UserID và avatar_url thành AvatarURL. Khóa gốc được giữ trong thẻ json để encoding/json ánh xạ các trường chính xác.

› Những kiểu Go nào được dùng?

Chuỗi thành string, số nguyên thành int (hoặc int64 khi có giá trị vượt quá 32 bit), số thập phân thành float64 và giá trị logic thành bool. Mảng thành slice, đối tượng rỗng thành map[string]any, còn giá trị chỉ là null hoặc trộn nhiều loại thành any.

› Struct đặt tên và struct nội tuyến khác nhau thế nào?

Chế độ đặt tên viết mỗi đối tượng lồng nhau thành một kiểu riêng, như Address hay Order, dễ tái sử dụng và kiểm thử hơn. Chế độ nội tuyến đặt các kiểu struct ẩn danh ngay trong struct cha và gom mọi thứ vào một khai báo, giống nhiều công cụ chuyển đổi nhanh.

› Khi nào omitempty được thêm vào?

Mặc định chỉ thêm vào các trường tùy chọn, tức là các trường vắng mặt ở một số đối tượng trong mảng hoặc đôi khi là null. Bạn cũng có thể thêm cho mọi trường hoặc không trường nào. Bật con trỏ để phân biệt giá trị vắng mặt hay null với giá trị 0.

› JSON của tôi có bị tải lên không?

Không. Struct được tạo trong trình duyệt và không có gì được gửi lên máy chủ.