日期:2014-05-18  浏览次数:20993 次

将一个Java对象实例序列化成byte,用C#来对byte序列还原对象成C#的一个对象实例
我是想java用udp向C#版本的server发送对象,server需要将这个java的序列化对象反持久化。由于两种语言持久化格式是不同的,没法用C#的readObject方法直接来,请问这里面有什么方法么,谢谢。

我有想过用xml做中转,但好像这个没必要,总感觉已经有现成的东西已经实现2种语言的mapping,请帮忙,多谢。

------解决方案--------------------
我是想java用udp向C#版本的server发送对象,server需要将这个java的序列化对象反持久化。由于两种语言持久化格式是不同的,没法用C#的readObject方法直接来,请问这里面有什么方法么,谢谢。

我有想过用xml做中转,但好像这个没必要,总感觉已经有现成的东西已经实现2种语言的mapping,请帮忙,多谢。

==============
对于框架内部实现的默认序列化,Java和.NET的实现不同,所以肯定.NET里面反序列化会失败。

一个可以试试的办法是用自定义序列化的方式,自己来实现序列化的几个虚方法——自己将类型的各个属性写到流里面,然后.NET里面就可以把各个属性按顺序读出来。但是Java和.NET基本类型又不是一致的,所以可能需要注意必要的转换。

最推荐的还是用XML,例如用SOAP包的形式,也可以用最简单的XML。但是会有额外的传输开销。
------解决方案--------------------
用文件(xml,txt)和数据库比较好。
直接的方法会有各种问题~
------解决方案--------------------
我也搞过这个java和C#进行通讯,可以实现通讯,但是字符编码问题解决不了!!

当然搞了很长时间都搞不定,好像这个不行吧!基本所有的编码都试过什么,它们各方收到包后的反序列化是可以肯定失败的!!

如果楼主想自己写序列化的方法也行不过java基本型和C#也不一样!!

用xml传和soap,传的时候传文件然后再读出来,我想可以解决楼主的问题,但是要占用额外的资源。