你的位置:首页 > 软件开发 > ASP.net > NetworkComms V3 使用Json序列化器进行网络通信

NetworkComms V3 使用Json序列化器进行网络通信

发布时间:2015-03-13 22:00:51
刚才在网上闲逛,偶然看到一篇文章 C#(服务器)与Java(客户端)通过Socket传递对象网址是:http://www.cnblogs.com/iyangyuan/archive/2012/12/23/2829712.html#3140522其中提到了 C#与java如 ...

刚才在网上闲逛,偶然看到一篇文章 

C#(服务器)与Java(客户端)通过Socket传递对象

网址是:http://www.cnblogs.com/iyangyuan/archive/2012/12/23/2829712.html#3140522

其中提到了 C#与java如通过传递对象通信的问题 摘引如下:

NetworkComms V3 使用Json序列化器进行网络通信NetworkComms V3 使用Json序列化器进行网络通信
 通信关键:     C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象。     对于Socket技术,发送数据之前,一般将字符串转换成字节数组,然后发送字节数组;接收数据时,收到的也是字节数组,很多时候需要转换成字符串后使用。     下边是一些常用的转换。     C#语言字符串转换成UTF-8字节数组:     byte[] b = Encoding.UTF8.GetBytes("123");     C#语言UTF-8字节数组转换成字符串:     // receiveData是字节数组,receiveN是字节数组length     get='_blank'>string removeMsg = Encoding.UTF8.GetString(receiveData, 0, receiveN);     Java语言字符串转换成UTF-8字节数组:     /* strContent 是要转换的字符串*/     byte[] bs = strContent.getBytes("UTF-8");     Java语言UTF-8字节数组转换成字符串:     /* charArray 是UTF-8格式的字节数组,一般从IO流中获取的时候就指定为UTF-8,read_rst 是字节数组length*/     String resultStr = new String(charArray, 0, read_rst);       序列化关键:     大家都知道,对象是保存在内存中的,具体点说是内存中的堆区。因此当我们尝试保存、传递对象时,必须先把对象序列化,变成字符表示,把无形变成有形。     由于是跨语言的交互,我们即不能用Java特有的序列化方式,也不能用C#特有的序列化方式,必须找一个通用的序列化格式才能交互。显然,Json是不二的选择。     由此可知,我们需要Json完成以下功能:     经过测试,用如下方法可实现上述转换。     C#端可以用开源项目JSON.NET,下载后根据自己的.NET版本,选择相应的Newtonsoft.Json.dll,引用后再添加:using Newtonsoft.Json;using Newtonsoft.Json.Converters;即可使用。     C#用Json序列化对象方法:     //te是要序列化的对象;obj是对象序列化后的字符串     string obj = JsonConvert.SerializeObject(te);     C#用Json反序列化对象方法:     //TestEntity是目标类型;obj是经过Json序列化的对象,字符串形式     TestEntity te = JsonConvert.DeserializeObject<TestEntity>(obj);     Java端可以用开源项目google-gson,下载后是一个jar格式的包,直接在项目中导入这个包,并添加引用:import com.google.gson.Gson;即可使用。     Java用Json序列化对象方法:     Gson gson = new Gson();     /*te是需要序列化的对象*/     String s = gson.toJson(te);     Java用Json反序列化对象方法:     Gson gson = new Gson();     /*s是经过Json序列化的对象,字符串类型;TestEntity是目标类型*/     /*注意:使用fromJson方法反序列化一个对象时,该对象的类型必须显示的声明一个不带参数的构造方法*/     TestEntity te = gson.fromJson(s,TestEntity.class);

原标题:NetworkComms V3 使用Json序列化器进行网络通信

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。