2015-12-02 7 views
10

Avere una struttura per l'aggiornamento, come questo:maniglia opzionale campo JSON nel corpo della richiesta HTTP in Golang

type MyStruct struct { 
Name string `json:"name"` 
Age int `json:"age"` 
Email string `json:"email"` 
} 

Poi ho un certo valore (potrebbe essere di default, significa che non c'è bisogno di aggiornare questo valore) a inserire come dati di richiesta http. Ho notato che il corpo JSON generato conterrà sempre tutti i 3 campi (nome, età ed e-mail), anche se non è necessario aggiornarli tutti. In questo modo:

{ 
    "name":"Kevin", 
    "age":10, 
    "email":"" 
} 

C'è un modo per consentire che il corpo JSON contenga non tutti i campi con la stessa struttura? Esempio:

{ 
    "name":"kevin" 
} 
+0

Fondamentalmente voglio qualcosa di simile a "non definito" in JavaScript (in modo che il campo non si trovi in ​​una parte del corpo). – Yuduo

risposta

17

Si desidera utilizzare l'opzione di omitempty

type MyStruct struct { 
    Name string `json:"name,omitempty"` 
    Age int `json:"age"` 
    Email string `json:"email,omitempty"` 
} 

Se vuoi Age ad essere facoltativo e si deve utilizzare un puntatore, dal momento che il valore zero di un int non è veramente "vuoto"

type MyStruct struct { 
    Name string `json:"name,omitempty"` 
    Age *int `json:"age,omitempty"` 
    Email string `json:"email,omitempty"` 
} 
+0

Grazie mille !! Questo è quello che sto cercando. – Yuduo

Problemi correlati