GoLang使用来自kafka的json消息
我使用以下命令在本地运行kafka:GoLang使用来自kafka的json消息,json,go,apache-kafka,Json,Go,Apache Kafka,我使用以下命令在本地运行kafka: /bin/kafka-console-producer.sh--代理列表localhost:9092--主题testTop 之后,我在命令行中将此消息发送给消费者: { "field1":"value1", "keys":{ "fieldId":"fd", "fieldId2":"fd2", "personId":"pr1", "rand":"lkfdnvlkdsjf" } } 该消息由go
/bin/kafka-console-producer.sh--代理列表localhost:9092--主题testTop
之后,我在命令行中将此消息发送给消费者:
{
"field1":"value1",
"keys":{
"fieldId":"fd",
"fieldId2":"fd2",
"personId":"pr1",
"rand":"lkfdnvlkdsjf"
}
}
该消息由golang客户端使用,代码按结构对其进行解包:
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]接口{}
Unmarshal(msg.Value,&m)
它返回:
map[field1:value1键:map[fieldId:fd fieldId2:fd2 personId:pr1 rand:lkfdnvlkdsjf]]
但如果我对结构指针使用解组:
m:=消息{}
Unmarshal(msg.Value,&m)
输出不是这样满的:
{value1{}
有没有办法用结构指针正确地解组消息 结构的字段应该是大写的,因此使用
Field1
而不是Field1
json包只访问结构类型的导出字段(以大写字母开头的字段)。因此,JSON输出中将只显示结构的导出字段。
谢谢,我将字段名称改为大写。它可以工作。结构的字段应该是大写的,因此使用Field1
而不是Field1
json包只访问结构类型的导出字段(那些以大写字母开头的字段)。因此,JSON输出中将只显示结构的导出字段。
谢谢,我将字段名称改为大写。它起作用了。