我有一个使用protobuf网对其序列化的WebAPI。它工作正常。
现在,我需要使用Web API中我的Android应用程序。我的问题是,如何使用反序列化的Android的?或者,它是不可能的,我必须在我的Web应用程序使用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; }
}
你提到的Android和你提到的Java。如果你在Java的Android上的编码,那么你的确将无法使用protobuf网,因为这是.NET的具体 - 但protobuf网试图让您轻松过渡。在现有的代码,你可以使用:
var proto = Serializer.GetProto<YourRootType>();
它会给你一个代表.proto
的模型YourRootType
模式(也有对“proto2”与“proto3”等选项)。它通常工作正常,但如果你有喜欢的东西和DateTime
不使用DataFormat.WellKnown
选项,那么它可以得到一个有点尴尬(提示:如果可能的话,切换到任何DataFormat.WellKnown
/ DateTime
属性TimeStamp
选项,但请注意,这样做所以是一个重大更改,这将使用由谷歌在“proto3”时间表添加google.protobuf.Timestamp
和google.protobuf.Duration
布局)。
然后,通过protoc
运行.proto模式,你应该得到可用的Java代码相同的模型。
注意:如果你想调整它随意更改产生.proto架构的名称;名字没有关系 - 场的数量和类型,但是:做的。