项目中用到了json,此处就简单介绍其用法。
认识JSON:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。(百度百科).
JSON是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。
JSON结构:
var jsonObj = { "name": "tom", "age": 12 }
var jsonArr = [ { "id": 1, "name": "john" }, {"age":13,"address":"str1"} ]
var str = jsonObj.name;//tom var str2 = jsonArr[0].id;//1 var str3 = jsonArr[1].age;//13
.net中使用json,常用的两种方法:
定义类:
//类:人 public class Person { public int id { get; set; } public Student student { get; set; } } //类:学生 public class Student { public int score { get; set; } public string grade { get; set; } }
1、引入using Newtonsoft.Json;处理json最常用的插件Newtonsoft.Json。
对象转换为json字符串:
Student student = new Student(); student.grade = "二年级"; student.score = 99; Person person = new Person(); person.id = 5; person.student = student; string jsonstr = JsonConvert.SerializeObject(person);
结果:
{"id":5,"student":{"score":99,"grade":"二年级"}}
json字符串转换为对象:
可以使用JObject或JArray的Parse方法轻松地将json字符串转换为json对象,然后通过对象的方式提取数据。
JObject ob = JObject.Parse(jsonstr); int id = Convert.ToInt32(ob["id"].ToString());//5 Student stu = (ob["student"]).ToObject<Student>(); int score = stu.score;//99
2、使用.net框架自带类库,命名空间System.Web.Script.Serialization,添加引用:System.Web.Extensions.dll。
对象转换为json字符串:
System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); System.Text.StringBuilder sb = new StringBuilder(); jsonSerializer.Serialize(person, sb); string jsonstr = sb.ToString();
json字符串转换为对象:
Person ob = jsonSerializer.Deserialize<Person>(jsonstr); int id = ob.id;//5 Student stu = ob.student; int score = stu.score;//99
后台处理特殊json字符串:
有时在后台接收到一个json字符串或者数组,可以根据得到的字符串进行类定义,然后解析得到比较理想的属性值。
因为经常用到,此处将web请求响应代码贴出来,方便查看。
string url = "http://192.168.5.111:8001"; System.Net.HttpWebRequest request = (System.Net.HttpWebRequest) WebRequest.Create(url); request.ContentType = "application/json; charset=UTF-8"; request.Method = "POST";
string jsonstr = ""; byte[] data = System.Text.Encoding.UTF8.GetBytes(jsonstr); request.ContentLength = data.Length; System.IO.Stream stream = request.GetRequestStream(); stream.Write(data, 0, data.Length); stream.Close(); System.Net.HttpWebResponse response = (System.Net.HttpWebResponse) request.GetResponse(); System.IO.StreamReader streamReader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8); string text = streamReader.ReadToEnd(); streamReader.Close();
参考: