próbuję wrócić trochę JSON z serwera, ale ten błąd z następującego koduJak przekonwertować (typ * bytes.Buffer) do wykorzystania jako [] bajt argumentu w.Write
cannot use buffer (type *bytes.Buffer) as type []byte in argument to w.Write
Przy odrobinie googling znalazłem this SO answer ale nie mógł zmusić go do pracy (patrz drugi przykładowy kod z komunikatem o błędzie)
1st przykładowy kod
buffer := new(bytes.Buffer)
for _, jsonRawMessage := range sliceOfJsonRawMessages{
if err := json.Compact(buffer, jsonRawMessage); err != nil{
fmt.Println("error")
}
}
fmt.Println("json returned", buffer)//this is json
w.Header().Set("Content-Type", contentTypeJSON)
w.Write(buffer)//error: cannot use buffer (type *bytes.Buffer) as type []byte in argument to w.Write
2nd próbki kodu z błędem
cannot use foo (type *bufio.Writer) as type *bytes.Buffer in argument to json.Compact
cannot use foo (type *bufio.Writer) as type []byte in argument to w.Write
var b bytes.Buffer
foo := bufio.NewWriter(&b)
for _, d := range t.J{
if err := json.Compact(foo, d); err != nil{
fmt.Println("error")
}
}
w.Header().Set("Content-Type", contentTypeJSON)
w.Write(foo)
Dziękuję, ale wymaga trochę wyjaśnień. Co chciałbym przekazać json.Compact w tej sytuacji (które muszę użyć, aby usunąć \ n i \ t)? Czy możesz podać nieco więcej informacji dotyczących mojej próbki kodu? Dziękuję, jeśli możesz pomóc. – Leahcim
na przykład, to wypisuje bajty do mojego terminala- 'fmt.Println (" json zwrócił ", buffer.Bytes())', jeśli przekażę buffer.Bytes() do w.Write, czy nie zwróci on strumienia również bajty. Potrzebuję jsona. Uwaga: nie mogę tego przetestować, ponieważ są inne problemy z moją przeglądarką. – Leahcim
@Leahcim Jeśli chcesz go wydrukować, wypróbuj 'buffer.String()'. 'buffer.Bytes()' zwraca zakodowane w UTF-8 bajty tekstu json. – icza