项目需要解析一个类A,这个类A已经打包成byte数组过来了。类的结构大概是这样
A:B
{
  字段1;
  字段2;
}B
{
  字段3;
  字段4;
}解析方法是
byte[] Abytes = _toBytes.ToByte(mqMsg.gpsBody);
A  mqGPS = (A)_fromBytes.fromByte(Abytes , 0, typeof(A));如果我本地的A不继承B,那么解析可以成功,但是取不到B的内容。
如果我本地A继承B,解析会报错。我用javaobject解析(因为这个包是java传过来的),发现里面的结构是
{
["字段1","1的值"],
["字段2","2的值"],
["*字段3","3的值"],
["*字段4","4的值"]
}父类的字段里面多了一个星号。但是如果将B的字段命名成*字段3,这就成指针了肯定不行。请问有什么办法可以解析成类?(不要用javaobject一个字段一个字段扣的方法)继承

解决方案 »

  1.   

    byte[] Abytes = _toBytes.ToByte(mqMsg.gpsBody); // 个人感觉这里应该是一个二维数组
    A  mqGPS = (A)_fromBytes.fromByte(Abytes , 0, typeof(A));// 估计这个地方应该是循环写入值类型和引用类型,这样直接转换?
      

  2.   


    是一个一维数组,设断点看过。这个fromBytes是JavaCSConverter里面的FromByteConvertHelper类里面有个fromByte可以直接转换成javaobject
      

  3.   


    解析成javaobject之后,javaobject会把它根据原来传过来的自定义类型字段名称和值保存。namespace JavaCSConverter.javaobject
    {
        public class JavaObject : ClassDescriberFactory
        {
            public JavaObject(string javaClassName);
            public JavaObject(string javaClassName, string productName);        public string JavaClassName { get; }
            public string ProductName { get; set; }        public object this[string s] { get; set; }        public ClassDescriber getClassDescriber();
        }
    }这是javaobject的定义,准换好了是public JavaObject(string javaClassName, string productName);这样显示的。但是这个传过来的byte数组绝绝对对是一维数组。不是说必须二维数组才能转化出二维来…………
      

  4.   

    没人答我……还好我们老大给解决了,分给我自己好了,方法要点在下面。格式依然是
    A:B
    {
      字段1;
      字段2;
    }但是A和B中可能为null的字段特别是int和byte要定义为可为空就是int?,byte?解析的时候不要解析子类,解析父类B 就可以都取到了。