在Mongodb中存储protobuf Java对象的简单方法?

伊拉佩

当需要存储以Java实例形式(来自生成的Java类)的protobuf3消息时,最好的选择是存储对象本身,然后再从数据库中读取它。

我的用例是将此类消息存储在Mongodb中。在调查此问题时,我找不到办法,因此决定在这里询问。

涂鸦

您可以将Protobufs Java类转换为JSON,然后从JSON转换为org.bson.Document,然后编写文档并在读取时反转该转换。

有关更多详细信息,请参见JsonFormat

这是写端的一个简单示例:

YourProtobufsClass anInstance = YourProtobufsClass.getDefaultInstance();

String json = JsonFormat.printer().print(yourProtobufsClass); 

Document document = Document.parse(json);

mongoClient.getDatabase(...).getCollection(...).insertOne(document);

这是读取端的一个简单示例:

JsonFormat.Parser parser = JsonFormat.parser();

FindIterable<Document> documents = collection.find(...);
for (Document document : documents) {
  YourProtobufsClass.Builder builder = YourProtobufsClass.newBuilder();

  parser.merge(document.toJson(), builder);

  // now you can build an instance of your protobufs class which 
  // has been populated from the retrieved JSON
  YourProtobufsClass anInstance = builder.build();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java中做Xml的简单方法

Java-从列表/数组中的每个对象获取单个属性的最简单方法?

在Java中,对对象进行编号的简单方法是什么?

从对象列表中删除对象的最简单方法?

在Java中创建简单解析的最简单方法

在TypeScript中检查文字对象类型的更简单方法

从javascript对象中删除键值数据的最简单方法

在不使用关系数据库的情况下用Java存储和检索对象的简单方法?

在IntelliJ中重新排序Java类的方法的简单方法?

在Java中从集合中筛选元素的简单方法?

使用GridFS在流星中存储大对象的最简单方法是什么?

在Java中获取命令输出的最简单方法

在Java中获取包装器类类型的简单方法

在Java中重复字符串的简单方法

在Java中同步2个线程的更简单方法?

在Java中播放单个频率的简单方法?

在Java中创建随机数的简单方法

在Java中异步执行MySQL查询语句的简单方法

在Java中实现MouseListener的更简单方法

在SwiftUI中制作动态,可编辑的简单对象列表的最简单方法?

从对象列表中查找唯一对象的最简单方法

不在对象上下文中时使用$ this在静态方法中调用简单方法

使用构造函数Javascript中的field方法提供对象的最简单方法

在JavaScript中无需编码循环即可用对象填充数组的最简单方法?

在剃须刀页面中传递对象的最简单方法

PHP 在对象数组中获得唯一性的更简单方法

在 Rails 中向对象添加新字段的更简单方法

使用CoffeeScript检查对象中是否存在键的最简单方法

在嵌套字典中序列化对象的最简单方法