编码/gob 和编码/json 之间的区别

2024-03-20

我正在用 Go 编写一个应用程序,它使用编码/gob 在节点之间通过 UDP 发送结构和切片。它工作正常,但我注意到encoding/json也有类似的API。搜索了一下,发现了这个信息(https://golang.org/pkg/encoding/ https://golang.org/pkg/encoding/):

gob 包 gob 管理 gob 流 - 交换二进制值 编码器(发送器)和解码器(接收器)之间。
json 包 json 实现了 JSON 的编码和解码,定义如下 RFC 4627。

有人可以向我解释一个是否比另一个更有效率,并且一般比较何时选择什么?另外,如果我需要与非 Go 应用程序交互,我想 json 会是首选?


在 Go 程序之间进行通信时,Gob 更受欢迎。然而,目前仅 Go 支持 gob,而且,C https://code.google.com/archive/p/libgob/,因此只有当您确定用任何其他编程语言编写的程序都不会尝试解码这些值时才使用它。

就性能而言,至少在我的机器上,Gob 远远优于 JSON。测试文件 https://gist.github.com/thehowl/85057ad21697160e81ac42bf358a322a(在您的 GOPATH 下单独放置一个文件夹)

$ go test -bench=.        
testing: warning: no tests to run
BenchmarkGobEncoding-4           1000000              1172 ns/op
BenchmarkJSONEncoding-4           500000              2322 ns/op
BenchmarkGobDecoding-4           5000000               486 ns/op
BenchmarkJSONDecoding-4           500000              3228 ns/op
PASS
ok      testencoding    6.814s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编码/gob 和编码/json 之间的区别 的相关文章

  • Laravel 5.4 将json保存到数据库

    帮我将 json 保存到数据库 表字段类型 文本 我有带有强制转换数组的模型 class Salesteam extends Model protected casts team members gt array 我想要像这样 index
  • Jackson Kotlin - 反序列化 JsonNode

    Problem 我有字符串形式的 JSON 内容 我首先想用 Jackson 以编程方式遍历它 然后 当我有感兴趣的节点时 我想反序列化它 我尝试过的 我已使用 mapper readValue 成功反序列化字符串 但现在我想在 jsonN
  • 单值上下文中的多值错误

    我在编译 GO 代码时遇到此错误 multiple value fmt Println in single value context 我正在尝试创建一个函数 该函数接受可变数量的整数并将每个变量打印在一行上 GO package main
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • GoLang 中的 HTML 部分

    我刚刚开始使用 Go 我想用它创建一个网络应用程序 我现在尝试的是以handlebarsjs 式的方式使用模板 我想将页眉和页脚从主页中取出 以便可以将它们注入到每个网页上 我当前的设置应该是解析主页 页眉和页脚 HTML 文件并缓存它们
  • 打印对象的键和值

    我想从 javascript 对象打印一个键 值对 我的数组中可以有不同的键 因此无法将其硬编码为 object 0 key1 var filters user abc application xyz console log Object
  • 调整框大小后没有获取 gridster 序列化数据

    我试图在更改框的大小和位置后获取序列化数据 但我只得到加载详细信息 调整框大小后如何获取序列化数据 我还想获取框中的文本 框中的值 这是我的代码 function var gridster gridster gt ul gridster w
  • 整数的 ASN.1 / DER 编码

    我目前开始使用 DER 杰出编码规则 编码 并且在理解整数编码时遇到问题 在参考文档中https www itu int ITU T studygroups com17 languages X 690 0207 pdf https www
  • Facebook服务器端登录、CORS

    我正在实现一个带有 FB 服务器端登录的网站 简化步骤如下 一个简单的按钮触发 JS 脚本 该脚本调用我的后端 APIhttps localhost fblogin function sendFbLoginData get https lo
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • 有没有办法从另一个包访问结构体的私有字段?

    我在一个包中有一个具有私有字段的结构 package foo type Foo struct x int y Foo 另一个包 例如 白盒测试包 需要访问它们 package bar import foo func change foo f
  • 强制 spring boot jackson 反序列化器使用 BigDecimal

    我遇到一个问题 杰克逊将数值反序列化为我无法预测的任意类型 例如 如果有人传递值 14 jackson 会将其实例化为Integer 然而 如果有人传递值 14 01 那么 Jackson 会将其实例化为Double 这是一个问题 因为我有
  • 为什么我会看到“TypeError:字符串索引必须是整数”?

    我正在学习 Python 并试图将 GitHub 问题转化为可读的形式 使用以下建议如何将 JSON 转换为 CSV https stackoverflow com questions 1871524 convert from json t
  • Chart.js 圆环图无法正常工作

    我正在尝试使用 Chart js 圆环图 我的 JSON 数据是从数据库中正确获取的 但在值填充时图表将不会显示 如果我粘贴静态示例代码 那么它会显示正确的数据 function playerPrel2Res qID var tmp pla
  • 如何反序列化嵌套对象?

    我已经成功地通过创建数据契约类来创建反序列化 在对客户进行了一番唠叨之后 我的问题是我声明的两个字段都返回空的东西 因此 我查看了它并意识到 JSON 对象是嵌套的 并且我不清楚如何访问内部的部分 数据合同是这样的 但我得到Bopp作为 n
  • 反序列化时出现 Gson 异常(无参数构造函数不存在)

    我遇到了一个问题 该问题仅在 5000 台设备中的 10 台中出现 无法用我的模拟器和测试设备重现它 这似乎是一个非常具体的问题 仅涉及少数设备 我所拥有的只是堆栈跟踪和我的代码 因此 我正在针对黑洞进行开发 只有在 GooglePlay
  • Android.system.ErrnoException:isConnected失败:ECONNREFUSED(连接被拒绝)

    我使用Java连接MySQL和Json将数据发送到android 当我通过URL地址将数据从Java发送到json时 http 192 168 1 221 9999 rentalcar service category getAllManu
  • 使用 Coldfusion 11 的 CFdirectory,文件名中存在非 ASCII 字符问题

    我有一个类似的问题 ColdFusion CFDirectory 和法语 https stackoverflow com questions 1715632 coldfusion cfdirectory and the french从而没有
  • Jackson 中没有注释的多态反序列化

    我有一个CloudEvent
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba

随机推荐