Sto scrivendo una prova in cui voglio mettere a confronto il risultato di json.Marshal
con una stringa JSON statica:Come rimuovere tutti gli spazi, i newline, le schede dall'array di byte?
var json = []byte(`{
"foo": "bar"
}`)
Come il risultato di json.Marshal
non ha \n
, \t
e spazi pensavo di poter fare facilmente:
bytes.Trim(json, " \n\t")
per rimuovere tutti questi caratteri. Tuttavia sfortunatamente questo non funziona. Potrei scrivere una funzione di assetto personalizzato e usare bytes.TrimFunc
ma questo mi sembra complicato.
Che altro potevo fare per avere una stringa JSON "compresso" con quanto meno codice possibile?
migliore, Bo
Hai bisogno di un funzione di sostituzione, non una funzione di taglio. Ma cosa succede se hai spazi all'interno di chiavi e valori? come puoi dire se sei dentro una chiave/valore o no? non puoi farlo senza scrivere un parser JSON :) quindi sei bloccato in un loop qui, a meno che tu non sia sicuro al 100% che tutti gli spazi nel json siano padding e non in chiavi/valori. in caso contrario, basta usare 'strings.Replace' :) –
Dal momento che è un array di byte e non una stringa è possibile utilizzare' bytes.Replace' invece. –