Java 프로그램을 사용하여 읽으려고하는 couchbase에 저장된 .NET 직렬화 객체가 있습니다. protobuf-net을 사용하여 객체를 직렬화했으며 해당 코드를 변경할 수 없습니다. 직렬화 된 주석이 달린 클래스를 보여주는 코드 스 니펫을 아래에 첨부했습니다. 내가 오류가 발생, 내가 그것을 해제 직렬화 할 때, 그러나protobuf-net 직렬화 된 객체를 Java로 변환
message A {
optional uint32 field1 = 1;
optional uint32 field2 = 2;
optional uint32 field3 = 3;
repeated uint64 field4 = 4 [packed=true];
optional bytes field5 = 5;
repeated uint32 field6 = 6 [packed=true];
}
을 -
[ProtoContract]
[VersionType(Version = VersionNumbers.V3)]
public class A : B
{
[ProtoMember(1)]
public UInt16 field1 { get; set; }
[ProtoMember(2)]
public UInt16 field2 { get; set; }
[ProtoMember(3)]
public UInt16 field3 { get; set; }
[ProtoMember(4, IsPacked = true)]
public List<UInt32> field4 { get; set; }
[ProtoMember(5, IsPacked = true)]
public byte[] field5 { get; set; }
[ProtoMember(6, IsPacked = true)]
public List<UInt16> field6 { get; set; }
}
나는 여기에 다른 게시물의 일부를 다음과 같이 보이는 .proto 파일을 만들려고 "프로토콜 메시지에 잘못된 태그 (제로)가 포함되어 있습니다." .proto 파일을 정의한 방식에 문제가 있다고 생각하지만 문제가 무엇인지 파악할 수 없습니다. 내가 여기서 실수하고 있니?
감사합니다. Vivek
내가 자세히 보았을 때 직렬화 된 객체는 protobuf-net에 의해 직렬화되지 않았습니다! 그 문제가 해결되었습니다. uint64를 uint32로 변경하면 저에게 효과적입니다. –