Server websocket saya akan menerima dan membuka data JSON. Data ini akan selalu dibungkus dalam objek dengan pasangan kunci / nilai. Key-string akan bertindak sebagai pengenal nilai, memberi tahu server Go tentang jenis nilainya. Dengan mengetahui jenis nilai apa, saya kemudian dapat melanjutkan ke JSON menguraikan nilai ke dalam jenis struct yang benar.
Setiap json-object mungkin berisi beberapa pasangan kunci / nilai.
Contoh JSON:
{
"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},
"say":"Hello"
}
Apakah ada cara mudah menggunakan "encoding/json"
paket untuk melakukan ini?
package main
import (
"encoding/json"
"fmt"
)
// the struct for the value of a "sendMsg"-command
type sendMsg struct {
user string
msg string
}
// The type for the value of a "say"-command
type say string
func main(){
data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)
// This won't work because json.MapObject([]byte) doesn't exist
objmap, err := json.MapObject(data)
// This is what I wish the objmap to contain
//var objmap = map[string][]byte {
// "sendMsg": []byte(`{"user":"ANisus","msg":"Trying to send a message"}`),
// "say": []byte(`"hello"`),
//}
fmt.Printf("%v", objmap)
}
Terima kasih atas saran / bantuan apa pun!
RawMessage
. Persis yang saya butuhkan. Tentangsay
, saya sebenarnya masih menginginkannya sebagaijson.RawMessage
, karena string masih belum didekodekan (membungkus"
dan melarikan diri\n
-karakter, dll), jadi saya akan membatalkannya juga.