Поэтому у меня есть небольшая проблема:C# Protobuf внутрисетевой сериализованная объект Java
сообщение отправляются с использованием MQTT, она состоит из ряда сериализованных объектов с использованием Protobuf-сети в C# (я не могу изменить этот код, но у меня есть доступ к источнику). На другом конце я получаю сериализованные объекты в Java, проблема в том, что я не могу десериализовать объекты, используя protobuf, если кто-нибудь когда-либо имел эту проблему и решал ее, пожалуйста, помогите :)
Пример объект из C#:
using ProtoBuf;
namespace Concentrator.Services
{
[ProtoContract]
public class MeterID
{
private byte[] _id;
[ProtoMember(1)]
public byte[] ID
{
get { return _id; }
set { _id = value.Length == 16 ? value : null; }
}
[ProtoMember(2)] public string MeterType;
}
}
Моя попытка воссоздать тот же объект в Java (файл .proto):
syntax = "proto2";
package mqtt.entity;
option java_package = "mqtt.entity";
option java_outer_classname = "ProtoMeter";
message Meter {
optional bytes ID = 1;
optional string MeterType = 2;
}
message MeterID {
repeated Meter mid = 1;
}
решение этого примера будет огромная помощь, спасибо.
Код, в котором объект десериализации в C#:
var ms = new MemoryStream(data, 7, data.Length - 9)
var res = Serializer.Deserialize<List<MeterID>>(ms);
это работает в C#, я пытаюсь добиться того же в Java
Вы говорите: «Я не могу, дескать, десериализировать объекты», но что происходит, когда вы пытаетесь? Ошибки компиляции? Ошибки времени выполнения? Повреждение данных? –
Проверьте ошибку при попытке десериализации –