Java 如何在Android中反序列化ProtoBuf-net

Java 如何在Android中反序列化ProtoBuf-net,java,android,protobuf-net,Java,Android,Protobuf Net,我有一个WebApi,它使用ProtoBuf net进行序列化。它很好用 现在,我需要在我的Android应用程序中使用WebApi。我的问题是,如何在Android中使用反序列化?或者它是不可能的,我必须在我的WebApi中使用Google.ProtoBuf 我真的很喜欢ProtoBuf网络,所以,如果可以的话,我愿意继续使用ProtoBuf网络。我只需要找到在Android中反序列化它的方法。请给我指一个正确的方向 谢谢 更新: 下面是从小提琴手那里得到的回应 HTTP/1.1 200 OK

我有一个WebApi,它使用ProtoBuf net进行序列化。它很好用

现在,我需要在我的Android应用程序中使用WebApi。我的问题是,如何在Android中使用反序列化?或者它是不可能的,我必须在我的WebApi中使用Google.ProtoBuf

我真的很喜欢ProtoBuf网络,所以,如果可以的话,我愿意继续使用ProtoBuf网络。我只需要找到在Android中反序列化它的方法。请给我指一个正确的方向

谢谢

更新: 下面是从小提琴手那里得到的回应

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/x-protobuf
Expires: -1
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcWENJRllcRG90TkVUXFVCcm9kXFVXZWJBUElcVVdlYkFQSVxhcGlcZGV2aWNlXEdldEdyb3Vwcw==?=
X-Powered-By: ASP.NET
Date: Wed, 06 Feb 2019 07:36:52 GMT
Content-Length: 76


"   XzFood          !        
&   XzClothing          !        
这是我的模型

private int id = 0;
[ProtoMember(11)]
public int Id
{
    get { return id; }
    set { id = value; }
}

private string name = string.Empty;
[ProtoMember(15)]
public string Name
{
    get { return name; }
    set { name = value; }
}

private List<CDProduct> products = new List<CDProduct>();
[ProtoMember(45)]
public List<CDProduct> Products
{
    get { return products; }
    set { products = value; }
}
private int id=0;
[原成员(11)]
公共整数Id
{
获取{return id;}
设置{id=value;}
}
私有字符串名称=string.Empty;
[原成员(15)]
公共字符串名
{
获取{返回名称;}
设置{name=value;}
}
私有列表产品=新列表();
[原成员(45)]
公开上市产品
{
获取{返回产品;}
设置{products=value;}
}

你提到Android,你提到Java。如果你在Android上用Java编码,那么你确实不能使用protobuf-net,因为这是特定于.net的,但是protobuf-net试图让你更容易转换。在现有代码中,可以使用:

var proto = Serializer.GetProto<YourRootType>();
var proto=Serializer.GetProto();
这将为您提供一个
.proto
模式,该模式表示
您的根类型的模型(有“proto2”和“proto3”等选项)。它通常工作正常,但如果您有
DateTime
之类的功能,并且没有使用
DataFormat.well-known
选项,那么它可能会有点尴尬(提示:如果可能,切换到
DateTime
/
TimeStamp
属性的
DataFormat.well-known
选项,但请注意,这样做是一个突破性的更改;这将使用谷歌在“proto3”时间框架中添加的
google.protobuf.TimeStamp
google.protobuf.Duration
布局)

然后通过
protoc
运行该.proto模式,应该可以获得相同模型的可用Java代码


注意:如果你想修改它,请随意更改生成的.to模式中的名称;名称不重要。但是,字段编号和类型。buf net.还有,伙计,你是我的英雄!关于时间,我通常会将它转换为double(从

01/01/2015 00:00:00起我使用了毫秒),所以时间不是问题。有没有办法手动反序列化它(即编写我自己的代码)?如果可能的话,我想远离.proto模式。这是因为如果我更改了模型,我需要重新生成proto模式,然后使用protoc获取java代码,然后将其放入我的android中。我宁愿直接更改我的android类(如果可能的话).@Sam如果是这样的话,你可能正在寻找。至于我和Java:很简单,我缺乏Java方面的经验来做好这方面的工作;这可能会改变,但……这不是我一直想要做的事情。我宁愿真正深入于一件事,而不是适度深入于几件事