json for .net(一)
2012-08-06 16:28
190 查看
JSON建构于两种结构:
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 (具体参见http://www.json.org/json-zh.html)
json格式的数据示例:
"{\"Name\":\"Apple\",\"Expiry\":\"2010-12-18T00:00:00\",\"Price\":3.99,\"Sizes\":[\"Small\",\"Medium\",\"Large\"]}"
利用.Net 3.5自带的JavaScriptSerializer进行JSON序列化与反序列化
为了使用.Net 3.5自带的JavaScriptSerializer,需要添加引用System.ServiceModel.Web和System.Runtime.Serialization
using System.Web.Script.Serialization;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
1.引入System.Web.Script.Serialization命名空间使用JavaScriptSerializer类实现简单的序列化
2.引入 System.Runtime.Serialization.Json命名空间,使用DataContractJsonSerializer类实现序列化
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 (具体参见http://www.json.org/json-zh.html)
json格式的数据示例:
"{\"Name\":\"Apple\",\"Expiry\":\"2010-12-18T00:00:00\",\"Price\":3.99,\"Sizes\":[\"Small\",\"Medium\",\"Large\"]}"
利用.Net 3.5自带的JavaScriptSerializer进行JSON序列化与反序列化
为了使用.Net 3.5自带的JavaScriptSerializer,需要添加引用System.ServiceModel.Web和System.Runtime.Serialization
using System.Web.Script.Serialization;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
1.引入System.Web.Script.Serialization命名空间使用JavaScriptSerializer类实现简单的序列化
//定义一个需要序列化的类: public class Employee { [ScriptIgnore] public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }//注:ScriptIgnore特性用来标记不需要被序列化的属性 测试: Employee emp = new Employee() { Id = 1, Name = "ZhangSan", Age = 20 }; JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); //Serializer string serializerEmp = jsonSerializer.Serialize(emp); Response.Write(serializerEmp + "<br/>");//输出:{"Name":"ZhangSan","Age":20} //DeSerializer Employee p = jsonSerializer.Deserialize<Employee>(serializerEmp); Response.Write("id:"+p.Id.ToString() + ",Name:" + p.Name +",Age:"+ p.Age + "<br/>");//输出 id:0,Name:ZhangSan,Age:20
2.引入 System.Runtime.Serialization.Json命名空间,使用DataContractJsonSerializer类实现序列化
[DataContract] public class People { [DataMember(Name = "id")] public int Id { get; set; } [IgnoreDataMember] public string Name { get; set; } }//注:可以使用IgnoreDataMember指定成员不被序列化,DataMember定义序列化属性参数。如果使用DataMember标记属性字段必须使用DataContract标记类,否则DataMember标记将不起作用 测试: People people = new People() { Id = 2, Name = "LiSi" }; DataContractJsonSerializer json = new DataContractJsonSerializer(people.GetType()); string serializedPeople = ""; //Serializer序列化 using (MemoryStream ms = new MemoryStream()) { json.WriteObject(ms, people); serializedPeople = Encoding.UTF8.GetString(ms.ToArray()); Response.Write(serializedPeople + "<br/>");//输出:{"id":2} } //DeSerializer反序列化 using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(serializedPeople))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People)); People myPepole = serializer.ReadObject(ms) as People; Response.Write("Id:"+myPepole.Id.ToString() + ",Name:" + myPepole.Name + "<br/>");//输出: Id:2,Name: }
相关文章推荐
- Jayrock: JSON and JSON-RPC for .NET
- JayRock:JSON and JSON_RPC for .Net
- How to set custom JsonSerializerSettings for Json.NET in MVC 4 Web API?
- Jayrock: JSON and JSON-RPC for .NET
- C# Json.net Self referencing loop detected for property
- JayRock:JSON and JSON_RPC for .Net
- json for .net(二)开源的Json.Net库
- Microshaoft Cross-Domain + ASP.NET MVC 5 WebAPI 2 + Self-Host + JsonpMediaTypeFormatter + WCF + JsonP + PerformaceCounterFilter + Knockout.js + MVVM
- ASP.NET WebApi MediaTypeFormatter参数绑定的研究,支持POST文本方式的JSON字符串绑定
- JSON.NET Error Self referencing loop detected for type
- Jayrock: JSON and JSON-RPC for .NET
- Json for the .NET Compact Framework
- Jayrock: JSON and JSON-RPC for .NET
- 'Newtonsoft.Json' already has a dependency defined for 'NETStandard.Library'
- Json.Net
- 转摘.net+ JQUERY操作JSON例子
- Jquery 组合form元素为json格式,asp.net反序列化
- Oracle Data Provider for .NET连接oracle数据库
- [翻译]ASP.NET MVC 3 开发的20个秘诀(一)[20 Recipes for Programming MVC 3]:通过密码验证限制访问视图
- Java转Json:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException