我是想java用udp向C#版本的server发送对象,server需要将这个java的序列化对象反持久化。由于两种语言持久化格式是不同的,没法用C#的readObject方法直接来,请问这里面有什么方法么,谢谢。我有想过用xml做中转,但好像这个没必要,总感觉已经有现成的东西已经实现2种语言的mapping,请帮忙,多谢。

解决方案 »

  1.   

    我是想java用udp向C#版本的server发送对象,server需要将这个java的序列化对象反持久化。由于两种语言持久化格式是不同的,没法用C#的readObject方法直接来,请问这里面有什么方法么,谢谢。我有想过用xml做中转,但好像这个没必要,总感觉已经有现成的东西已经实现2种语言的mapping,请帮忙,多谢。==============
    对于框架内部实现的默认序列化,Java和.NET的实现不同,所以肯定.NET里面反序列化会失败。一个可以试试的办法是用自定义序列化的方式,自己来实现序列化的几个虚方法——自己将类型的各个属性写到流里面,然后.NET里面就可以把各个属性按顺序读出来。但是Java和.NET基本类型又不是一致的,所以可能需要注意必要的转换。最推荐的还是用XML,例如用SOAP包的形式,也可以用最简单的XML。但是会有额外的传输开销。
      

  2.   

    用文件(xml,txt)和数据库比较好。
    直接的方法会有各种问题~
      

  3.   

    ===================
    一个可以试试的办法是用自定义序列化的方式,自己来实现序列化的几个虚方法——自己将类型的各个属性写到流里面,然后.NET里面就可以把各个属性按顺序读出来。但是Java和.NET基本类型又不是一致的,所以可能需要注意必要的转换。 
    =========================但是我不知道.net流里面是什么形式哦,有什么办法么。感谢以上各位,不知其他大虾有什么想法?
      

  4.   

    我也搞过这个java和C#进行通讯,可以实现通讯,但是字符编码问题解决不了!!当然搞了很长时间都搞不定,好像这个不行吧!基本所有的编码都试过什么,它们各方收到包后的反序列化是可以肯定失败的!!如果楼主想自己写序列化的方法也行不过java基本型和C#也不一样!!用xml传和soap,传的时候传文件然后再读出来,我想可以解决楼主的问题,但是要占用额外的资源。
      

  5.   

    谁说不行啊,用 UTf-8 编码 传 byte[] 不就行了