
MetaMessage(mm)是一個結構化數據交換協議。自描述、自約束、自示例,實現了無損數據交換,是一種原生適配 AI + 人類 + 機器的下一代通用協議。
在golang中,使用mm非常簡單。
首先安裝下mm `go get github.com/metamessage/metamessage`
一個簡單的示例:
package main
import (
"fmt"
mm "github.com/metamessage/metamessage"
)
func main() {
// 從結構體編碼
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 30}
data, err := mm.EncodeFromObject(p)
if err != nil {
panic(err)
}
fmt.Printf("Encoded: %x\n", data)
// 解碼到結構體
var decoded Person
err = mm.Decode(data, &decoded)
if err != nil {
panic(err)
}
fmt.Printf("Decoded: %+v\n", decoded)
// 從 JSONC 編碼
jsoncStr := `{"name": "Bob", "age": 25}`
data2, err := mm.EncodeFromJSONC(jsoncStr)
if err != nil {
panic(err)
}
// 解碼到 JSONC
jsoncOut, err := mm.DecodeToJSONC(data2)
if err != nil {
panic(err)
}
fmt.Println("JSONC:", jsoncOut)
}通常我們只需要使用四個接口就夠了:
mm能夠實現各語言間數據的精準傳遞,不丟失結構、類型等信息,可以完美重建數據結構,可以替代傳統的json、protobuf、messagepack等序列化方式了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。