logo
GeekFormat

JSON a Go

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.

Relacionats

Sobre JSON a Go: Convertint JSON a l'struct fortament tipat de Go

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.

Casos d'ús

  • Desenvolupament backend Go converteix JSON de resposta API REST a struct, enllaça directament a paràmetres de handler Gin/Echo/Fiber amb json.Unmarshal
  • Durant integració frontend-backend, pren JSON de resposta d'exemple de Postman, genera ràpidament model Go per reduir escriptura manual de camps
  • En integrar callbacks Webhook de tercers, converteix JSON payload a struct Go per a accés i validació pràctics a nivell de camp
  • Converteix fitxers de configuració JSON de Viper/Consul/Nacos a tipus Go, substituint accés dèbilment tipat map[string]interface{}
  • Equips de microserveis unifiquen estructura de sol·licitud/resposta per a interfícies gRPC/HTTP, converteix JSON d'exemple a tipus Go compartits
  • Enginyers de prova converteixen fixture JSON a struct Go, utilitzen amb testify per a proves basades en assercions
  • DevOps analitzen línies de log JSON recollides per ELK/Fluentd, generen struct per a anàlisi estructurada amb programes Go
  • Després que crawlers extraguin dades JSON, convertir a struct Go, treballar amb gorm/gen o ent per generar models de base de dades
  • Dades de telemetria JSON reportades per dispositius IoT convertides a struct Go, deserialització i filtratge en programes de pont edge
  • Converteix missatges JSON consumits de Kafka/NATS/RabbitMQ a tipus Go, per a implementació de consumidors orientats a esdeveniments
  • Desenvolupadors SDK converteixen JSON de resposta d'exemple del servidor a struct Go, escriuen al paquet types de la llibreria client per a referència dels usuaris
  • Converteix JSON d'exemple de la documentació Swagger/OpenAPI a struct Go com a exemples de codi de documentació d'interfície
  • Estudiants o instructors converteixen JSON d'exemple a struct durant cursos Go, demostren sistema de tipus de Go i ús d'etiquetes json
  • Scripts de migració de dades converteixen files JSON exportades de MySQL/PostgreSQL a struct Go, per a mapeig de camps i validació de tipus
  • JSON de configuració CI/CD convertit a struct Go, pràctic per a lectura de configuració fortament tipada en eines de pipeline escrites en Go
  • Projectes llegits refactoritzen codi de lectura JSON dinàmic basat en map a accés fortament tipat basat en struct

Com usar-ho

  1. Enganxa contingut JSON a l'editor esquerre, o arrossega i deixa anar fitxers .json/.txt, o fes clic a 'Exemple' per carregar dades integrades.
  2. Espera uns 400ms, l'eina convertirà automàticament i mostrarà el codi struct Go generat a la dreta.
  3. Si JSON té errors, fes clic al botó 'Reparar JSON' per corregir automàticament errors comuns de format i continua la generació.
  4. Comprova la sortida dreta, fes clic a 'Copiar' per enganxar al projecte Go, o fes clic a 'Descarregar' per desar com a fitxer model.go.

Característiques

  • Generació d'struct Go local al navegador: anàlisi JSON i generació de codi Go completades al navegador, dades brutes no carregades al servidor
  • Conversió automàtica amb debounce de 400ms: sense clic manual necessari després d'enganxar o modificar, codi Go copiable es mostra en temps real a la dreta
  • Inferència de tipus intel·ligent: strings mapegen a string, booleans a bool, enters a int64, floats a float64, arrays a slices, objectes a structs
  • Expansió automàtica d'objectes imbricats: genera recursivament tipus struct independents, mantenint jerarquia JSON clara
  • Etiquetes json generades automàticament: camps inclouen etiqueta `json:"nom_original"`, llestos per a usar amb encoding/json
  • Reparació d'errors JSON en un clic: gestiona automàticament comes finals, cometes simples, cometes faltants i altres errors comuns de format, continua generació després de reparació
  • Admet entrada enganxar/carregar/exemple: arrossega i deixa anar fitxers .json/.txt, o carrega exemples xinesos integrats
  • Copiar i descarregar en un clic: copia codi Go complet al porta-retalls, o descarrega com a fitxer model.go directament al projecte
  • Historial d'entrada localStorage: desa automàticament entrades recents, recuperació ràpida després d'actualitzar o tancar accidentalment la pàgina
  • Editor de pantalla partida responsiu: amplada de panells esquerre/dret ajustable, visualització còmoda d'entrada/sortida a escriptori i mòbil

Exemples de codi

Deserialitzar JSON amb struct generat

go

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)
}

Processar JSON amb camps potencialment faltants

go

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")
    }
}

Preguntes freqients

Com convertir JSON a struct Go?

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.

El codi Go generat inclou etiquetes json?

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.

Els arrays JSON es convertiran a slices Go?

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`.

Els objectes imbricats generaran diversos structs?

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`.

Quin tipus generen els valors null?

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.

Puc personalitzar el nom de l'struct arrel?

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.

Què passa si JSON té errors de format?

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.

Les dades es carregaran al servidor? És privat i segur?

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.

El codi generat es pot col·locar directament en projectes Go?

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.

Aquesta eina és gratuïta? Cal registrar-se?

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.

Quina mida de fitxers JSON és suportada?

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ó.

Els tipus numèrics generaran uniformement float64?

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ó.

Solució de problemes

A la dreta es mostra 'Si us plau introdueix dades JSON'

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.

Mostra error d'anàlisi JSON però no troba posició de l'error

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ó.

Els noms de camp generats no compleixen les convencions de nomenclatura Go

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ó.

El camp null genera interface{}, vull canviar a tipus específic

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.

La pàgina es ralenteix després de conversió de JSON gran

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.

El tipus d'element de l'array s'infereix com a []interface{}

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ó.

Glossari

struct
Tipus de dades compost de Go utilitzat per combinar diversos camps en un tipus. El cos del codi Go generat per aquesta eina consisteix en diverses definicions struct.
slice
Tipus d'array dinàmic de Go, sintaxi []T. Aquesta eina mapeja arrays JSON a slices corresponents, ex. []string, []int64, []UserItem.
json tag
Cadena entre comes invertides després de camp struct Go, ex. `json:"user_name"`, utilitzada per especificar nom de camp durant serialització/deserialització encoding/json. Aquesta eina genera automàticament aquesta etiqueta.
interface{}
Tipus d'interfície buida de Go, pot representar qualsevol valor. Aquesta eina utilitza interface{} com a seguretat per defecte en trobar null JSON o tipus indeterminat.
PascalCase
Estil de nomenclatura on cada paraula comença amb majúscula, ex. UserName, AddressCity. Go requereix que els camps exportats comencin amb majúscula, així que aquesta eina converteix automàticament noms de camp JSON a PascalCase.
encoding/json
Paquet de codificació/descodificació JSON a la biblioteca estàndard de Go. Després que structs generats per aquesta eina són aparellats amb etiquetes json, json.Unmarshal i json.Marshal es poden utilitzar directament.
unmarshal
Procés d'analitzar un flux de bytes JSON a un valor Go. Després de generar l'struct, l'ús més comú és cridar json.Unmarshal(data, &user).
omitempty
Opció comuna per a l'etiqueta json de Go, ex. `json:"name,omitempty"`, significa ometre sortida quan el camp és valor zero. Aquesta eina no genera omitempty per defecte; afegir manualment segons necessitat després de la generació.

Taula de referència mapeig tipus JSON a tipus Go

Aquesta eina infereix automàticament tipus Go corresponents segons tipus de valor JSON; els mapejos comuns són els següents:

Exemple valor JSONTipus Go generatNota
"hello"stringMapeig directe de string
true / falseboolValor booleà
42int64Nombre sense punt decimal
3.14float64Nombre amb punt decimal
nullinterface{}Seguretat per defecte quan tipus específic no es pot inferir
["a","b"][]stringArray de strings
[1,2,3][]int64Array d'enters
[{...},{...}][]UserItemArray d'objectes, tipus d'elements generats recursivament
{"id":1}UserObjecte genera struct independent

Recomanacions de selecció de tipus numèrics comuns en Go

L'eina utilitza int64 i float64 per defecte; ajusta segons necessitats en projectes reals:

EscenariTipus recomanatRaó
IDs enters generals, comptatgesint64Coherent amb per defecte de l'eina, compatible amb majoria de nombres JSON
PK autoincremental de base de dades coneguda com a positivauint64Evita nombres negatius, semàntica més clara
Sistemes 32 bits o enters de petit rang explícitint32Redueix consum de memòria
Preus, coordenades, càlcul científicfloat64Coherent amb per defecte de l'eina, precisió float estàndard
Càlcul monetari precísdecimal.Decimal / intfloat64 té risc de precisió; recomana shopspring/decimal o int en unitat de cèntims

Privacy & Security

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.