MGen 跨语言对象序列化开源项目

我要开发同款
匿名用户2014年12月21日
29阅读
开发技术Java
所属分类程序开发、常用工具包
授权协议MIT

作品详情

MGen是一个支持跨语言的对象序列化项目,由以下两部分组成:

源码生成的工具(MGen编译器)

语言的支持库

MGen类似Gooogle的ProtocolBuffers,可序列化到JSON和二进制格式。

目前支持的语言有:

C++

Java

JavaScript

示例代码:

#include <com/fruitcompany/ClassRegistry.h>#include <mgen/serialization/JsonPrettyWriter.h>#include <mgen/serialization/JsonReader.h>using namespace mgen;using namespace com::fruitcompany;using namespace com::fruitcompany::fruits;// A class registry for type identificationconst ClassRegistry registry;std::string toJSON(const MGenBase& object) {  // Create a target to stream the object to  std::stringstream stream;  // Create a writer object  JsonPrettyWriter<std::stringstream, ClassRegistry> writer(stream, registry);  // Write the object  writer.writeObject(object);  // Return the written string  return stream.str();}template <typename T>T fromJSON(const std::string& json) {  // Create a data source to stream objects from  std::stringstream stream(json);  // Create a reader object  JsonReader<std::stringstream, ClassRegistry> reader(stream, registry);  // Read object. You can read T* polymorphicly with reader.readObject<T>()  return reader.readStatic<T>();}int main() {  // Create some objects  const Apple apple(Brand_A, 4);  const Banana banana = Banana().setLength(5).setBrand(Brand_B);  // Serialize them to JSON and print them  std::cout << toJSON(banana) << std::endl;  std::cout << toJSON(apple) << std::endl;  // Read the objects back from their serialized form  const Apple appleBack = fromJSON<Apple>(toJSON(apple));  const Banana bananaBack = fromJSON<Banana>(toJSON(banana));  // Check that they are still the same  std::cout << (apple == appleBack) << std::endl;  std::cout << (banana == bananaBack) << std::endl;  return 0;}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论