JSON a Go
Sense contingut
Enganxa JSON a l'esquerra, i les definicions de tipus struct Go llestes per a ús directe en projectes Go es generen automàticament a la dreta. Processament local pur al navegador, sense registre ni càrrega necessària.
Sense contingut
Enganxa JSON a l'esquerra, i les definicions de tipus struct Go llestes per a ús directe en projectes Go es generen automàticament a la dreta. Processament local pur al navegador, sense registre ni càrrega necessària.
JSON a Go és el procés de convertir automàticament dades en format JSON a definicions de tipus struct del llenguatge Go. JSON és el format d'intercanvi de dades més comú en APIs REST, fitxers de configuració, cues de missatges i logs, mentre que Go és un llenguatge fortament tipat; durant el desenvolupament, l'estructura dinàmica de JSON sovint ha de ser mapejada a struct abans de la deserialització amb encoding/json. Escriure structs manualment, especialment objectes imbricats, fàcilment porta a camps faltants o tipus incorrectes; aquesta eina té com a objectiu automatitzar el treball repetitiu.
L'struct de Go és un tipus de dades compost, declarat amb `type Name struct { ... }`. Cada camp consta de nom i tipus; els noms de camp han de començar amb majúscula per ser accessibles per altres paquets, els anomenats 'identificadors exportats'. L'eina converteix automàticament noms de camp JSON a noms de camp exportats PascalCase, ex. `user_name` mapeja a `UserName`, amb clau original preservada a l'etiqueta json.
La conversió central d'aquesta eina es realitza pel Web Worker jsonFormat al navegador, cridant el renderitzador Go de quicktype-core amb opcions `just-types` i `no-comments`. Tot el flux no depèn de serveis backend: el JSON d'entrada s'analitza localment, tipus inferits, codi Go generat, finalment presentat a l'editor dret.
La inferència de tipus segueix el mapeig convencional JSON a Go: strings mapegen a `string`, booleans a `bool`, enters a `int64`, floats a `float64`, arrays a slices `[]T`, objectes a structs independents, `null` a `interface{}`. Els objectes imbricats es processen recursivament, mantenint jerarquia clara.
Comparat amb l'escriptura manual, el codi generat per eina és un 'primer esborrany executable'. Els desenvolupadors normalment només han d'ajustar el nom de tipus arrel, nom de paquet, precisió de tipus de camp (ex. int64 a int) i si utilitzar tipus punter, abans de col·locar en projectes Go reals. Combinat amb còpia en un clic i descàrrega model.go, el treball repetitiu en fases d'integració i modelatge es redueix significativament.
Després de copiar struct generat al projecte, deserialitza directament resposta API amb encoding/json.
package main
import (
"encoding/json"
"fmt"
)
// Codi generat per l'eina GeekFormat JSON a Go
type User struct {
ID int64 `json:"id"`
Name string `json:"name"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
}
func main() {
data := []byte(`{
"id": 1,
"name": "Alice",
"tags": ["admin", "dev"],
"address": {"city": "Beijing"}
}`)
var u User
if err := json.Unmarshal(data, &u); err != nil {
panic(err)
}
fmt.Println(u.Name, u.Address.City)
}Si alguns camps API poden no existir, canvia camps corresponents a tipus punter o utilitza amb etiqueta omitempty.
package main
import "encoding/json"
// Canvia manualment camps a punters; quan falten, valor és nil
type User struct {
ID *int64 `json:"id,omitempty"`
Name *string `json:"name,omitempty"`
Email *string `json:"email,omitempty"`
}
func main() {
data := []byte(`{"id": 1, "name": "Bob"}`)
var u User
json.Unmarshal(data, &u)
if u.Email == nil {
println("Camp Email faltant")
}
}Enganxa contingut JSON al quadre d'entrada esquerre, l'eina convertirà automàticament en 400ms i mostrarà l'struct Go generat a la dreta. També pots arrossegar i deixar anar fitxers .json/.txt, o fer clic a 'Exemple' per carregar dades integrades. Després de la conversió, copia o descarrega el fitxer model.go en un clic.
Sí. L'eina genera codi Go basat en quicktype-core, i per defecte cada camp struct inclou etiqueta `json:"nom_original"`, pràctica per a serialització i deserialització directes amb Unmarshal/Marshal d'encoding/json.
Sí. Els arrays JSON generen tipus slice corresponents segons tipus d'elements, ex. `["a","b"]` genera `[]string`, `[1,2,3]` genera `[]int64`, `[{...},{...}]` genera tipus personalitzats com `[]UserItem`.
Sí. Cada objecte imbricat genera recursivament un tipus struct independent, nomenat en PascalCase. Per exemple, l'objecte `address` genera un struct `Address`, referenciat a l'struct principal mitjançant el camp `Address Address`.
Els valors null en JSON generalment s'infereixen com a `interface{}`, que és el tipus de seguretat per defecte. Si coneixes el tipus real del camp, pots afegir un valor d'exemple en JSON, regenerar, i després ajustar manualment al tipus específic.
Sí. L'eina utilitza el nom de tipus arrel (com User) per defecte; després de modificar el nom de tipus arrel a la configuració, tots els noms de subtipus associats s'actualitzen sincrònicament, el nom del fitxer descarregat també canvia conseqüentment.
L'eina detecta automàticament la validesa JSON. Si existeixen errors comuns com comes finals, cometes simples, cometes faltants, apareix el botó 'Reparar JSON'. En fer clic, l'eina intentarà reparació automàtica i regenerarà l'struct Go; quan la reparació falla, s'indica la posició específica de l'error.
No. Tota l'anàlisi JSON, inferència de tipus i generació de codi Go es completen al teu navegador mitjançant Web Worker; el contingut d'entrada i el codi generat mai no es carreguen a cap servidor, ni es registren al núvol. JSON sensible que conté claus API, tokens o dades empresarials es pot utilitzar amb seguretat.
Sí. El codi generat és struct Go estàndard amb etiquetes json, es pot copiar directament al directori types/ o models/ del projecte. Recomanem ajustar noms de tipus i noms de paquet segons les convencions de nomenclatura del projecte.
Completament gratuïta, sense registre ni inici de sessió necessari. Obre la pàgina i utilitza immediatament, sense límits de funcionalitats, marques d'aigua ni inici de sessió forçat.
L'eina no té límit estricte de mida de fitxer, però velocitat de conversió i rendiment de renderitzat depenen del rendiment del navegador i dispositiu. Recomanem processar JSON dins d'1MB per a millor experiència; per a JSON sobredimensionat, processa primer amb formatador JSON o eina de divisió.
No. L'eina distingeix enters i floats: camps enters generen int64, camps float generen float64. Si prefereixes tipus més específics com int, uint64, substitueix manualment després de la generació.
El quadre d'entrada esquerre és buit o només conté espais en blanc. Si us plau enganxa JSON vàlid, o fes clic a 'Exemple' per carregar dades, o arrossega i deixa anar fitxers .json/.txt.
Fes clic al botó 'Reparar JSON' sota el quadre d'entrada; l'eina intentarà automàticament reparar comes finals, cometes simples, cometes faltants, objectes estil JS i altres problemes. El resultat modificat es ressaltarà després de la reparació.
L'eina genera noms de camp PascalCase a partir de claus JSON. Si les claus contenen xinès o caràcters especials, poden generar-se noms de camp amb escapament. Recomanem canviar les claus JSON a anglès minúscules o snake_case, i després ajustar uniformement després de la generació.
Com que null no pot inferir tipus específic, l'eina utilitza interface{} com a seguretat. Pots donar a aquest camp un valor d'exemple (com "" o 0) en JSON font, regenerar i després canviar el tipus a tipus real com string/int64.
El renderitzat del navegador de JSON sobredimensionat i grans quantitats d'structs consumeix molta memòria. Recomanacions: ① mantén només camps clau en JSON d'exemple; ② divideix en diversos objectes i converteix separadament; ③ tanca altres pestanyes que consumeixen memòria al navegador.
Quan l'array és buit [] o els tipus d'elements són inconsistents, l'eina utilitza interface{} com a seguretat. Pots afegir elements d'exemple del mateix tipus, o canviar manualment el tipus a tipus slice específics com []string, []int64 després de la generació.
Aquesta eina infereix automàticament tipus Go corresponents segons tipus de valor JSON; els mapejos comuns són els següents:
| Exemple valor JSON | Tipus Go generat | Nota |
|---|---|---|
"hello" | string | Mapeig directe de string |
true / false | bool | Valor booleà |
42 | int64 | Nombre sense punt decimal |
3.14 | float64 | Nombre amb punt decimal |
null | interface{} | Seguretat per defecte quan tipus específic no es pot inferir |
["a","b"] | []string | Array de strings |
[1,2,3] | []int64 | Array d'enters |
[{...},{...}] | []UserItem | Array d'objectes, tipus d'elements generats recursivament |
{"id":1} | User | Objecte genera struct independent |
L'eina utilitza int64 i float64 per defecte; ajusta segons necessitats en projectes reals:
| Escenari | Tipus recomanat | Raó |
|---|---|---|
| IDs enters generals, comptatges | int64 | Coherent amb per defecte de l'eina, compatible amb majoria de nombres JSON |
| PK autoincremental de base de dades coneguda com a positiva | uint64 | Evita nombres negatius, semàntica més clara |
| Sistemes 32 bits o enters de petit rang explícit | int32 | Redueix consum de memòria |
| Preus, coordenades, càlcul científic | float64 | Coherent amb per defecte de l'eina, precisió float estàndard |
| Càlcul monetari precís | decimal.Decimal / int | float64 té risc de precisió; recomana shopspring/decimal o int en unitat de cèntims |
Tot el processament d'aquesta eina JSON a Go es completa completament localment al teu navegador: anàlisi JSON, inferència de tipus, generació de codi Go s'executen tots costat client mitjançant Web Worker; el contingut JSON d'entrada, fitxers carregats i codi Go generat mai no es carreguen a cap servidor, ni es registren, s'emmagatzemen en memòria cau o al núvol. Després de tancar o actualitzar la pàgina, tot el contingut d'entrada i sortida s'esborra automàticament de la memòria, només localStorage conserva l'historial d'entrades recents (es pot esborrar en qualsevol moment). Apte per processar JSON que conté claus API, tokens, dades empresarials sensibles.