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等序列化方式了。

相关推荐
不会代码的小猴18 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
丰锋ff1 天前
7.1Json
json
江畔柳前堤1 天前
LLM + Agent 模型效果评估:从入门到工业级体系构建的完整指南
开发语言·人工智能·自然语言处理·chatgpt·架构·json·batch
Elastic 中国社区官方博客1 天前
跳过 mapping 爆炸:ES|QL 无需动态 mapping 即可查询无 schema JSON key
大数据·人工智能·sql·elasticsearch·搜索引擎·json·全文检索
Magic-ZYJ2 天前
HarmonyOS 调用系统文件保存器导出 JSON 与 CSV
华为·json·harmonyos·鸿蒙·独立开发者
SeaTunnel2 天前
从 JSON 到 JSONL,Apache SeaTunnel 如何解决HTTP 大数据传输的内存难题?
http·开源·json·apache·数据集成·seatunnel
++==3 天前
JSON和Python的 四种核心容器
python·json
lf13210274 天前
用 JSON Schema 管装修节点记录:从照片台账到可校验工程数据
网络·数据库·人工智能·经验分享·物联网·json·智能家居
丰锋ff4 天前
7.2Qt中Json的操作
开发语言·qt·json
bugcome_com5 天前
JWT 知识小课堂:从入门到精通,一文吃透 JSON Web Token
前端·json