Protobuf C# 消息到 JAVA 的翻译 [英] Protobuf C# Message Translation to JAVA

查看:31
本文介绍了Protobuf C# 消息到 JAVA 的翻译的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将使用 C# 生成的消息转换为 JAVA.作为第一步,我生成了 proto 文件,这就是我得到的

I am trying to translate a message generated using C# to JAVA. As a first step, i generated proto file and this is what i got

package Om.Business.Scanner;

message ScannerActivityDetail {
   optional string ActivityId = 1;
   optional string ContextId = 2;
   optional int32 ActivityStart = 3;
   optional bcl.DateTime ActivityEnd = 4;
}

我如何解释 java 世界中的 bcl.DateTime?

How do i interpret bcl.DateTime in java world?

我正在使用 protobuf-net 并尝试反序列化由 C# 应用程序生成的消息.

I am using protobuf-net and trying to de-serialize message generated by C# app.

预先感谢您的帮助.

推荐答案

bcl.proto,应该很简单.以显而易见的方式创建一个Map,然后:

public static Date toDate(bcl.DateTime proto) {
    TimeUnit unit = SCALE_TO_UNIT_MAP.get(proto.getScale());
    if (unit == null) {
        throw new IllegalArgumentException("Invalid scale: " + proto.getScale());
    }
    long millis = unit.toMillis(proto.getValue());
    return new Date(millis);
}

您可以使用 Joda TimeDateTime 类型完全相同方式,因为它也有一个接受 long 的构造函数.(您可能需要考虑指定哪个时区...)

You could use Joda Time's DateTime type in exactly the same way, as it has a constructor accepting a long too. (You might want to think about which time zone to specify though...)

这篇关于Protobuf C# 消息到 JAVA 的翻译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆