在 Golang 中解析 JSON,无需冗余解组
处理包含不同消息类型的 JSON 数据时,直接解组为已知的结构类型可能不可行可行的。相反,可以采用两步过程来解决此问题。
第 1 步:将 JSON 对象解组为通用映射
将 JSON 对象解组为通用映射[ string]interface{} 来检索顶级键和值。
第 2 步:识别并解组特定键
迭代映射并识别与所需消息类型相对应的键。例如:
switch k { case "ping": // ... case "ack": // ... }
对于每个标识的键,将相应的值解组到 json.RawMessage 而不是接口{}:
var myAck json.RawMessage
第 3 步:解组到具体结构
最后,将RawMessage转换为所需的结构,直接解组,无需中间的编组/解组过程:
err = json.Unmarshal(myAck, &myAck)
通过部分解组到 RawMessage 并避免冗余解组,这种方法简化了流程并提高了解析复杂 JSON 数据时的效率。
以上是如何在 Go 中高效解析多种消息类型的 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!