关于C# JSON 数据传递方式
来源:互联网 发布:拼图工厂软件下载 编辑:程序博客网 时间:2024/06/09 05:37
我们都知道在互联网发展的初期时代,那时候采用的还是C/S架构的程序。
那么软件和软件传递的数据格式也从普通的文本转换到了XML这种格式化的存储格式文本。
那么在互联网移动互联网时代,这种C/S传递XML这种格式文件显然是不行的。
那么今天就来搞搞JSON。
我们来看看百度百科的解释:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
百度百科链接:http://baike.baidu.com/link?url=iu5RKjFjmnM5DtVOSTzMl8MsTxdhPCCkKWOyMnsI4zP9DPSC_Bxf-J8ZvgTymL0lfaao21iY9z_40TalfJHhLK
那么显然这种语言格式非常适合传递和解析,并且支持多种语言。
一个简单的JSON数据格式: 他包含了 一个KEY 和值 。写法是: {“KEY”:”VALUE”}
那么JSON 如果不支持负责的数据格式,那样显然是无法替代XML来作为传递的。
数组: [value,value]
复杂的集合:list ,map 等
更加复杂的结合体:
再复杂一点:
显然,看到这里 ,JSON的传递显然会符合你的要求:
我们再来看下标准的写法:一个标准的Map<List<Object>> 写法。 非常清晰
{ "people":[ {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}, {"firstName":"Jason","lastName":"Hunter","email":"bbbb"}, {"firstName":"Elliotte","lastName":"Harold","email":"cccc"} ]
一个复杂的Object 类:
{ "programmers": [{ "firstName": "Brett", "lastName": "McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName": "Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName": "Harold", "email": "cccc" }], "authors": [{ "firstName": "Isaac", "lastName": "Asimov", "genre": "sciencefiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christianfiction" }], "musicians": [{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }]}
说了这么多,开始正题,用C# 去操作JSON 然后进行传递数据,那么今天的教程只会写到如何生成和解析JSON 数据
在C#中操作JSON 数据的类库有很多,这里我们用到Newtonsoft.Json.dll 这个动态库。
那么引入进去之后我们就要开始干活了,在Java 中常常喜欢讲操作以Utils 定义,而C#喜欢用Helper 来定义。那还是遵循C#的归还,我们来定义一个
JsonHelper.cs
using Newtonsoft.Json;using Newtonsoft.Json.Converters;using System.IO; namespace Helper{ public class JsonHelper { /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对象</param> /// <returns>json字符串</returns> public static string SerializeObject(object o) { string json = JsonConvert.SerializeObject(o); return json; } /// <summary> /// 解析JSON字符串生成对象实体 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param> /// <returns>对象实体</returns> public static T DeserializeJsonToObject<T>(string json) where T : class { JsonSerializer serializer = new JsonSerializer(); StringReader sr = new StringReader(json); object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T)); T t = o as T; return t; } /// <summary> /// 解析JSON数组生成对象实体集合 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param> /// <returns>对象实体集合</returns> public static List<T> DeserializeJsonToList<T>(string json) where T : class { JsonSerializer serializer = new JsonSerializer(); StringReader sr = new StringReader(json); object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>)); List<T> list = o as List<T>; return list; } /// <summary> /// 反序列化JSON到给定的匿名对象. /// </summary> /// <typeparam name="T">匿名对象类型</typeparam> /// <param name="json">json字符串</param> /// <param name="anonymousTypeObject">匿名对象</param> /// <returns>匿名对象</returns> public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject) { T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject); return t; } }}
文中大多数是用实体转换过来的。那么我们在操作JSON 的时候最归还的做法是定义一个类,然后将该类实例化,最后进行转换。
如一个学生类:
namespace bean{ public class bean { /// <summary> /// 该操作ID 方便操作 /// </summary> private String id; public String Id { get { return id; } set { id = value; } } /// <summary> /// name /// </summary> private String name; public String Name { get { return name; } set { name= value; } } <span class="crayon-c">/// <summary></span><div class="crayon-line crayon-striped-line" id="crayon-5800e4a4ad652458391162-2"><span class="crayon-h"> </span><span class="crayon-c">/// age</span></div><div class="crayon-line" id="crayon-5800e4a4ad652458391162-3"><span class="crayon-h"> </span><span class="crayon-c">/// </summary></span></div><div class="crayon-line crayon-striped-line" id="crayon-5800e4a4ad652458391162-4"><span class="crayon-h"> </span><span class="crayon-m">private</span><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">age</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5800e4a4ad652458391162-5"> </div><div class="crayon-line crayon-striped-line" id="crayon-5800e4a4ad652458391162-6"><span class="crayon-h"> </span><span class="crayon-m">public</span><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">age</span></div><div class="crayon-line" id="crayon-5800e4a4ad652458391162-7"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-5800e4a4ad652458391162-8"><span class="crayon-h"> </span><span class="crayon-st">get</span><span class="crayon-h"> </span><span class="crayon-sy">{</span><span class="crayon-h"> </span><span class="crayon-st">return</span><span class="crayon-h"> </span><span class="crayon-v">age</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line" id="crayon-5800e4a4ad652458391162-9"><span class="crayon-h"> </span><span class="crayon-st">set</span><span class="crayon-h"> </span><span class="crayon-sy">{</span><span class="crayon-h"> </span><span class="crayon-v">age</span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">value</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="crayon-5800e4a4ad652458391162-10"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><table class="crayon-table "><tbody><tr class="crayon-row"><td class="crayon-nums " data-settings="hide"> </td></tr></tbody></table>}
然后我们将类实例化:
这步搞定之后,我们就需要生成JSON 数据了:
OK,那么这样就生成成功了,我们来看看
显然这样是非常直观的,那么我们再将反转成对象。
非常简单对不对。ok 这里我们就完成了JSON 的简单操作。更加复杂的LIST 和Map 这些可以参照API 自行解决。
- 关于C# JSON 数据传递方式
- Json数据 传递方式
- SpringMVC传递JSON数据的推荐方式
- C#使用Http Post方式传递Json数据字符串调用Web Service
- JSON进阶第二篇 AJAX方式传递JSON数据
- JSON进阶第二篇 AJAX方式传递JSON数据
- JSON进阶第二篇 AJAX方式传递JSON数据
- JSON进阶第二篇 AJAX方式传递JSON数据
- http方式传递数据,JSON数据的解析等
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- c#处理json数据最好的方式
- JSON传递bool类型数据的处理方式
- 关于数组型的json数据传递与解析
- 关于struts2传递json数据时取不到的问题
- 关于Java后台的Json数据的传递问题
- json传递数据
- Ajax传递Json数据
- Linux磁盘管理之LVM及RAID管理二之RAID管理
- 从零开始学GitHub【第一篇】
- Recycle获取第一个可见条目(包括瀑布流)位置以及getChildAt(position)
- 避免同一activity下 多个fragment 切换时重复执行onCreateView方法
- 腾讯计费平台部分布式MySQL数据库TDSQL架构分析
- 关于C# JSON 数据传递方式
- 20骰子(2)
- spss-数据清洗-处理重复数据
- 第七天学习笔记
- 10.12
- 成员变量、this和super问题、类的初始化过程问题
- RL笔记_Balance exploration and exploitation 几种简单方法
- Ubuntu 上Hadoop2.7.1分布式集群搭建
- 百度地图开发中的一些问题