我使用以下命令在本地运行kafka: ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTop
之后,我在命令行中将此消息发送给使用者:
{
"field1":"value1",
"keys":{
"fieldId":"fd",
"fieldId2":"fd2",
"personId":"pr1",
"rand":"lkfdnvlkdsjf"
}
}
该消息由golang客户端使用,代码按struct取消对其的处理:
type Message struct {
field1 string `json:"field1"`
keys struct {
fieldId string `json:"fieldId"`
fieldId2 string `json:"fieldId2"`
personId string `json:"personId"`
rand string `json:"rand"`
} `json:"keys"`
}
如果我使用接口解组:
var m map[string]interface{}
json.Unmarshal(msg.Value, &m)
它返回:
map[field1:value1 keys:map[fieldId:fd fieldId2:fd2 personId:pr1 rand:lkfdnvlkdsjf]]
但如果我对结构指针使用解组:
m := Message{}
json.Unmarshal(msg.Value, &m)
输出未满,如下所示:
{value1 { }}
有没有办法用struct指针正确地解组消息?
暂无答案!
目前还没有任何答案,快来回答吧!