Format Atlas

Confronta

Protocol Buffers o JSON

Protocol Buffers definisce messaggi tipizzati da schemi `.proto`, offre un wire format binario basato su numeri di campo e una mappatura ProtoJSON separata. JSON è un formato testuale generale secondo RFC 8259 e non presuppone uno schema specifico.

Quale formato scegliere?

Scegli Protobuf per messaggi RPC o tra servizi quando contratti tipizzati e compatibilità binaria sono gestiti. Scegli JSON per strutture testuali generiche e strumenti JSON diffusi.

Adatto per Schema Protocol Buffers

Definire la struttura dei messaggi Protocol Buffers · Condividere contratti dati tra linguaggi di programmazione

  • Generare codice per più linguaggi con protoc
  • Definire messaggi per RPC e comunicazione tra servizi

Adatto per JSON

API web, file di configurazione e scambio dati

  • Trasferire dati strutturati

Informazioni di base

VoceSchema Protocol BuffersJSON
Estensione.proto.json
Tipo MIMEtext/plainapplication/json
Usi comuniDefinire la struttura dei messaggi Protocol Buffers · Condividere contratti dati tra linguaggi di programmazioneAPI web, file di configurazione e scambio dati
Come aprireAprilo in un editor di testo o in un IDE compatibile con Protocol Buffers. Per verificare sintassi e import, compila il file con la versione e le impostazioni di protoc usate dal progetto.Aprilo in un editor di testo, IDE o visualizzatore compatibile con JSON.
Esportare o convertirePer passare a un altro formato di schema, associa tipi, numeri di campo, valori predefiniti, enum e regole di compatibilità. Poi genera il codice e prova dati reali. Cambiare l’estensione in .json o in un’estensione binaria non converte il file.Applicazioni o strumenti di conversione possono convertirlo in formati come CSV.

Scegli in base all'uso

Generare codice per più linguaggi con protoc

Definire la struttura dei messaggi Protocol Buffers · Condividere contratti dati tra linguaggi di programmazione

Schema Protocol Buffers

Definire messaggi per RPC e comunicazione tra servizi

Definire la struttura dei messaggi Protocol Buffers · Condividere contratti dati tra linguaggi di programmazione

Schema Protocol Buffers

Trasferire dati strutturati

API web, file di configurazione e scambio dati

JSON

Punto chiave 1

I dati wire binari Protobuf dipendono da definizione `.proto` e numeri di campo. JSON rappresenta oggetti e array testuali senza schema obbligatorio; ProtoJSON mappa i tipi Protobuf in valori JSON secondo regole proprie.

Approfondisci le differenze

Punto chiave 2

ProtoJSON mappa bytes in stringhe base64, int64 in stringhe, enum nei nomi e i nomi di campo in chiavi JSON. Non è il wire binario né un JSON Schema arbitrario.

Approfondisci le differenze

Approfondisci le differenze

Usa Protobuf per contratti tipizzati tra servizi e scambio binario compatto. Usa JSON per interfacce testuali generiche. Se usi la rappresentazione JSON di Protobuf, segui ProtoJSON senza presumere equivalenza con ogni documento JSON. Verifica presence, null, intervalli numerici, campi sconosciuti ed evoluzione dello schema.

  • Per interpretare numeri di campo e tipi dei messaggi wire Protobuf serve uno schema corrispondente. La sintassi JSON generale non lo richiede.
  • ProtoJSON ha mappature e regole di compatibilità proprie, è meno efficiente del wire binario e non conserva i campi sconosciuti nello stesso modo.
  • La conversione può influire su presence, precisione intera, nomi enum, chiavi map, oneof, null e campi sconosciuti. Convalida con librerie runtime reali e versioni vecchie e nuove dello schema.

Domande frequenti

ProtoJSON è intercambiabile con qualsiasi documento JSON?

No. ProtoJSON rappresenta schemi esprimibili in Protobuf con una mappatura specifica; non può rappresentare ogni JSON Schema né preservare ogni comportamento wire.

Scopri di più

Riferimenti e specifiche