golang中MetaMessage(mm)的使用

MetaMessage(mm)是一個結構化數據交換協議。自描述、自約束、自示例,實現了無損數據交換,是一種原生適配 AI + 人類 + 機器的下一代通用協議。

在golang中,使用mm非常簡單。

首先安裝下mm go get github.com/metamessage/metamessage

一個簡單的示例:

go 复制代码
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)
}

通常我們只需要使用四個接口就夠了:

  • EncodeFromObject(in any) ([]byte, error): 從結構體編碼
  • EncodeFromJSONC(in string) ([]byte, error): 從 JSONC 字符串編碼
  • Decode(in []byte, out any) error: 解碼到結構體
  • DecodeToJSONC(in []byte) (string, error): 解碼到 JSONC 字符串

mm能夠實現各語言間數據的精準傳遞,不丟失結構、類型等信息,可以完美重建數據結構,可以替代傳統的json、protobuf、messagepack等序列化方式了。

相关推荐
数据狐(Datafox)5 小时前
一文读懂京东商品详情API:返回字段解读与 JSON 样例
java·开发语言·数据库·windows·json
喜欢喝果茶.6 小时前
JSON / CBOR / Protobuf区别
mqtt·json
江屿风11 小时前
【Plain Language Large Model】【大语言模型底层原理全解析:从Token生成到智能体演进】流食般投喂
人工智能·笔记·语言模型·llm·json·token·聊天模板
syagain_zsx13 小时前
BRpc 搭建简单 rpc 服务器
服务器·c++·网络协议·rpc·protobuf·库
情 九1 天前
Dify HTTP 请求节点实战:发送 JSON、解析响应与处理异常
网络协议·http·json·dify
qq_白羊座1 天前
口头说的 JSON 和 MySQL 里的 JSON
数据库·mysql·json
love静思冥想1 天前
CLOB中JSON查询agent字段值(Oracle11g)
sql·oracle·json
Spatial3Ddddd1 天前
博物馆做VR全景好看之外还要能留档
json·vr
换元不配限1 天前
Android 接入 protobuf 实战:从 Gradle 配置到避开 R8 混淆坑
android·grpc·序列化·protobuf·protocolbuffers·二进制序列化·.proto
大鳥1 天前
JSON 解析最佳实践:从入门到生产级优化
hive·sql·spark·json