using System;
using System.Linq;
using System.Collections.Generic; namespace microstore
{
public interface IPerson
{
string FirstName
{
get;
set;
}
string LastName
{
get;
set;
}
DateTime BirthDate
{
get;
set;
}
}
public class Employee : IPerson
{
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
public DateTime BirthDate
{
get;
set;
} public string Department
{
get;
set;
}
public string JobTitle
{
get;
set;
}
}
public class PersonConverter : Newtonsoft.Json.Converters.CustomCreationConverter<IPerson>
{
//重写abstract class CustomCreationConverter<T>的Create方法
public override IPerson Create(Type objectType)
{
return new Employee();
}
} public partial class testjson : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//if (!IsPostBack)
// TestJson();
} #region 序列化
public string TestJsonSerialize()
{
Product product = new Product();
product.Name = "Apple";
product.Expiry = DateTime.Now.AddDays().ToString("yyyy-MM-dd hh:mm:ss");
product.Price = 3.99M;
//product.Sizes = new string[] { "Small", "Medium", "Large" }; //string json = Newtonsoft.Json.JsonConvert.SerializeObject(product); //没有缩进输出
string json = Newtonsoft.Json.JsonConvert.SerializeObject(product, Newtonsoft.Json.Formatting.Indented);
//string json = Newtonsoft.Json.JsonConvert.SerializeObject(
// product,
// Newtonsoft.Json.Formatting.Indented,
// new Newtonsoft.Json.JsonSerializerSettings { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore }
//);
return string.Format("<p>{0}</p>", json);
}
public string TestListJsonSerialize()
{
Product product = new Product();
product.Name = "Apple";
product.Expiry = DateTime.Now.AddDays().ToString("yyyy-MM-dd hh:mm:ss");
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" }; List<Product> plist = new List<Product>();
plist.Add(product);
plist.Add(product);
string json = Newtonsoft.Json.JsonConvert.SerializeObject(plist, Newtonsoft.Json.Formatting.Indented);
return string.Format("<p>{0}</p>", json);
}
#endregion #region 反序列化
public string TestJsonDeserialize()
{
string strjson = "{\"Name\":\"Apple\",\"Expiry\":\"2014-05-03 10:20:59\",\"Price\":3.99,\"Sizes\":[\"Small\",\"Medium\",\"Large\"]}";
Product p = Newtonsoft.Json.JsonConvert.DeserializeObject<Product>(strjson); string template = @"<p><ul>
<li>{0}</li>
<li>{1}</li>
<li>{2}</li>
<li>{3}</li>
</ul></p>"; return string.Format(template, p.Name, p.Expiry, p.Price.ToString(), string.Join(",", p.Sizes));
}
public string TestListJsonDeserialize()
{
string strjson = "{\"Name\":\"Apple\",\"Expiry\":\"2014-05-03 10:20:59\",\"Price\":3.99,\"Sizes\":[\"Small\",\"Medium\",\"Large\"]}";
List<Product> plist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Product>>(string.Format("[{0},{1}]", strjson, strjson)); string template = @"<p><ul>
<li>{0}</li>
<li>{1}</li>
<li>{2}</li>
<li>{3}</li>
</ul></p>"; System.Text.StringBuilder strb = new System.Text.StringBuilder();
plist.ForEach(x =>
strb.AppendLine(
string.Format(template, x.Name, x.Expiry, x.Price.ToString(), string.Join(",", x.Sizes))
)
);
return strb.ToString();
}
#endregion #region 自定义反序列化
public string TestListCustomDeserialize()
{
string strJson = "[ { \"FirstName\": \"Maurice\", \"LastName\": \"Moss\", \"BirthDate\": \"1981-03-08T00:00Z\", \"Department\": \"IT\", \"JobTitle\": \"Support\" }, { \"FirstName\": \"Jen\", \"LastName\": \"Barber\", \"BirthDate\": \"1985-12-10T00:00Z\", \"Department\": \"IT\", \"JobTitle\": \"Manager\" } ] ";
List<IPerson> people = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IPerson>>(strJson, new PersonConverter());
IPerson person = people[]; string template = @"<p><ul>
<li>当前List<IPerson>[x]对象类型:{0}</li>
<li>FirstName:{1}</li>
<li>LastName:{2}</li>
<li>BirthDate:{3}</li>
<li>Department:{4}</li>
<li>JobTitle:{5}</li>
</ul></p>"; System.Text.StringBuilder strb = new System.Text.StringBuilder();
people.ForEach(x =>
strb.AppendLine(
string.Format(
template,
person.GetType().ToString(),
x.FirstName,
x.LastName,
x.BirthDate.ToString(),
((Employee)x).Department,
((Employee)x).JobTitle
)
)
);
return strb.ToString();
}
#endregion #region 反序列化成Dictionary public string TestDeserialize2Dic()
{
//string json = @"{""key1"":""zhangsan"",""key2"":""lisi""}";
//string json = "{\"key1\":\"zhangsan\",\"key2\":\"lisi\"}";
string json = "{key1:\"zhangsan\",key2:\"lisi\"}";
Dictionary<string, string> dic = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(json); string template = @"<li>key:{0},value:{1}</li>";
System.Text.StringBuilder strb = new System.Text.StringBuilder();
strb.Append("Dictionary<string, string>长度" + dic.Count.ToString() + "<ul>");
dic.AsQueryable().ToList().ForEach(x =>
{
strb.AppendLine(string.Format(template, x.Key, x.Value));
});
strb.Append("</ul>");
return strb.ToString();
} #endregion #region NullValueHandling特性
public class Movie
{
public string Name { get; set; }
public string Description { get; set; }
public string Classification { get; set; }
public string Studio { get; set; }
public DateTime? ReleaseDate { get; set; }
public List<string> ReleaseCountries { get; set; }
}
/// <summary>
/// 完整序列化输出
/// </summary>
public string CommonSerialize()
{
Movie movie = new Movie();
movie.Name = "Bad Boys III";
movie.Description = "It's no Bad Boys"; string included = Newtonsoft.Json.JsonConvert.SerializeObject(
movie,
Newtonsoft.Json.Formatting.Indented, //缩进
new Newtonsoft.Json.JsonSerializerSettings { }
); return included;
}
/// <summary>
/// 忽略空(Null)对象输出
/// </summary>
/// <returns></returns>
public string IgnoredSerialize()
{
Movie movie = new Movie();
movie.Name = "Bad Boys III";
movie.Description = "It's no Bad Boys"; string included = Newtonsoft.Json.JsonConvert.SerializeObject(
movie,
Newtonsoft.Json.Formatting.Indented, //缩进
new Newtonsoft.Json.JsonSerializerSettings { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore }
); return included;
}
#endregion public class Product
{
public string Name { get; set; }
public string Expiry { get; set; }
public Decimal Price { get; set; }
public string[] Sizes { get; set; }
} #region DefaultValueHandling默认值
public class Invoice
{
public string Company { get; set; }
public decimal Amount { get; set; } // false is default value of bool
public bool Paid { get; set; }
// null is default value of nullable
public DateTime? PaidDate { get; set; } // customize default values
[System.ComponentModel.DefaultValue()]
public int FollowUpDays { get; set; } [System.ComponentModel.DefaultValue("")]
public string FollowUpEmailAddress { get; set; }
}
public void GG()
{
Invoice invoice = new Invoice
{
Company = "Acme Ltd.",
Amount = 50.0m,
Paid = false,
FollowUpDays = ,
FollowUpEmailAddress = string.Empty,
PaidDate = null
}; string included = Newtonsoft.Json.JsonConvert.SerializeObject(
invoice,
Newtonsoft.Json.Formatting.Indented,
new Newtonsoft.Json.JsonSerializerSettings { }
);
// {
// "Company": "Acme Ltd.",
// "Amount": 50.0,
// "Paid": false,
// "PaidDate": null,
// "FollowUpDays": 30,
// "FollowUpEmailAddress": ""
// } string ignored = Newtonsoft.Json.JsonConvert.SerializeObject(
invoice,
Newtonsoft.Json.Formatting.Indented,
new Newtonsoft.Json.JsonSerializerSettings { DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore }
);
// {
// "Company": "Acme Ltd.",
// "Amount": 50.0
// }
}
#endregion #region JsonIgnoreAttribute and DataMemberAttribute 特性 public string OutIncluded()
{
Car car = new Car
{
Model = "zhangsan",
Year = DateTime.Now,
Features = new List<string> { "aaaa", "bbbb", "cccc" },
LastModified = DateTime.Now.AddDays()
};
return Newtonsoft.Json.JsonConvert.SerializeObject(car, Newtonsoft.Json.Formatting.Indented);
}
public string OutIncluded2()
{
Computer com = new Computer
{
Name = "zhangsan",
SalePrice = 3999m,
Manufacture = "red",
StockCount = ,
WholeSalePrice = 34m,
NextShipmentDate = DateTime.Now.AddDays()
};
return Newtonsoft.Json.JsonConvert.SerializeObject(com, Newtonsoft.Json.Formatting.Indented);
} public class Car
{
// included in JSON
public string Model { get; set; }
public DateTime Year { get; set; }
public List<string> Features { get; set; } // ignored
[Newtonsoft.Json.JsonIgnore]
public DateTime LastModified { get; set; }
} //在nt3.5中需要添加System.Runtime.Serialization.dll引用
[System.Runtime.Serialization.DataContract]
public class Computer
{
// included in JSON
[System.Runtime.Serialization.DataMember]
public string Name { get; set; }
[System.Runtime.Serialization.DataMember]
public decimal SalePrice { get; set; } // ignored
public string Manufacture { get; set; }
public int StockCount { get; set; }
public decimal WholeSalePrice { get; set; }
public DateTime NextShipmentDate { get; set; }
} #endregion #region IContractResolver特性
public class Book
{
public string BookName { get; set; }
public decimal BookPrice { get; set; }
public string AuthorName { get; set; }
public int AuthorAge { get; set; }
public string AuthorCountry { get; set; }
}
public void KK()
{
Book book = new Book
{
BookName = "The Gathering Storm",
BookPrice = 16.19m,
AuthorName = "Brandon Sanderson",
AuthorAge = ,
AuthorCountry = "United States of America"
};
string startingWithA = Newtonsoft.Json.JsonConvert.SerializeObject(
book, Newtonsoft.Json.Formatting.Indented,
new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new DynamicContractResolver('A') }
);
// {
// "AuthorName": "Brandon Sanderson",
// "AuthorAge": 34,
// "AuthorCountry": "United States of America"
// } string startingWithB = Newtonsoft.Json.JsonConvert.SerializeObject(
book,
Newtonsoft.Json.Formatting.Indented,
new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new DynamicContractResolver('B') }
);
// {
// "BookName": "The Gathering Storm",
// "BookPrice": 16.19
// }
}
public class DynamicContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
private readonly char _startingWithChar; public DynamicContractResolver(char startingWithChar)
{
_startingWithChar = startingWithChar;
} protected override IList<Newtonsoft.Json.Serialization.JsonProperty> CreateProperties(Type type, Newtonsoft.Json.MemberSerialization memberSerialization)
{
IList<Newtonsoft.Json.Serialization.JsonProperty> properties = base.CreateProperties(type, memberSerialization); // only serializer properties that start with the specified character
properties =
properties.Where(p => p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList(); return properties;
}
} #endregion //...
}
}
        #region Serializing Partial JSON Fragment Example
public class SearchResult
{
public string Title { get; set; }
public string Content { get; set; }
public string Url { get; set; }
} public string SerializingJsonFragment()
{
#region
string googleSearchText = @"{
'responseData': {
'results': [{
'GsearchResultClass': 'GwebSearch',
'unescapedUrl': 'http://en.wikipedia.org/wiki/Paris_Hilton',
'url': 'http://en.wikipedia.org/wiki/Paris_Hilton',
'visibleUrl': 'en.wikipedia.org',
'cacheUrl': 'http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org',
'title': '<b>Paris Hilton</b> - Wikipedia, the free encyclopedia',
'titleNoFormatting': 'Paris Hilton - Wikipedia, the free encyclopedia',
'content': '[1] In 2006, she released her debut album...'
},
{
'GsearchResultClass': 'GwebSearch',
'unescapedUrl': 'http://www.imdb.com/name/nm0385296/',
'url': 'http://www.imdb.com/name/nm0385296/',
'visibleUrl': 'www.imdb.com',
'cacheUrl': 'http://www.google.com/search?q=cache:1i34KkqnsooJ:www.imdb.com',
'title': '<b>Paris Hilton</b>',
'titleNoFormatting': 'Paris Hilton',
'content': 'Self: Zoolander. Socialite <b>Paris Hilton</b>...'
}],
'cursor': {
'pages': [{
'start': '0',
'label': 1
},
{
'start': '4',
'label': 2
},
{
'start': '8',
'label': 3
},
{
'start': '12',
'label': 4
}],
'estimatedResultCount': '59600000',
'currentPageIndex': 0,
'moreResultsUrl': 'http://www.google.com/search?oe=utf8&ie=utf8...'
}
},
'responseDetails': null,
'responseStatus': 200
}";
#endregion Newtonsoft.Json.Linq.JObject googleSearch = Newtonsoft.Json.Linq.JObject.Parse(googleSearchText);
// get JSON result objects into a list
List<Newtonsoft.Json.Linq.JToken> listJToken = googleSearch["responseData"]["results"].Children().ToList();
System.Text.StringBuilder strb = new System.Text.StringBuilder();
string template = @"<ul>
<li>Title:{0}</li>
<li>Content: {1}</li>
<li>Url:{2}</li>
</ul>";
listJToken.ForEach(x =>
{
// serialize JSON results into .NET objects
SearchResult searchResult = Newtonsoft.Json.JsonConvert.DeserializeObject<SearchResult>(x.ToString());
strb.AppendLine(string.Format(template, searchResult.Title, searchResult.Content, searchResult.Url));
});
return strb.ToString();
} #endregion #region ShouldSerialize
public class CC
{
public string Name { get; set; }
public CC Manager { get; set; } //http://msdn.microsoft.com/en-us/library/53b8022e.aspx
public bool ShouldSerializeManager()
{
// don't serialize the Manager property if an employee is their own manager
return (Manager != this);
}
}
public string ShouldSerializeTest()
{
//create Employee mike
CC mike = new CC();
mike.Name = "Mike Manager"; //create Employee joe
CC joe = new CC();
joe.Name = "Joe Employee";
joe.Manager = mike; //set joe'Manager = mike // mike is his own manager
// ShouldSerialize will skip this property
mike.Manager = mike;
return Newtonsoft.Json.JsonConvert.SerializeObject(new[] { joe, mike }, Newtonsoft.Json.Formatting.Indented);
}
#endregion //驼峰结构输出(小写打头,后面单词大写)
public string JJJ()
{
Product product = new Product
{
Name = "Widget",
Expiry = DateTime.Now.ToString(),
Price = 9.99m,
Sizes = new[] { "Small", "Medium", "Large" }
}; string json = Newtonsoft.Json.JsonConvert.SerializeObject(
product,
Newtonsoft.Json.Formatting.Indented,
new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() }
);
return json; //{
// "name": "Widget",
// "expiryDate": "2010-12-20T18:01Z",
// "price": 9.99,
// "sizes": [
// "Small",
// "Medium",
// "Large"
// ]
//}
} #region ITraceWriter
public class Staff
{
public string Name { get; set; }
public List<string> Roles { get; set; }
public DateTime StartDate { get; set; }
}
public void KKKK()
{
Staff staff = new Staff();
staff.Name = "Arnie Admin";
staff.Roles = new List<string> { "Administrator" };
staff.StartDate = new DateTime(, , , , , , DateTimeKind.Utc); Newtonsoft.Json.Serialization.ITraceWriter traceWriter = new Newtonsoft.Json.Serialization.MemoryTraceWriter();
Newtonsoft.Json.JsonConvert.SerializeObject(
staff,
new Newtonsoft.Json.JsonSerializerSettings
{
TraceWriter = traceWriter,
Converters = { new Newtonsoft.Json.Converters.JavaScriptDateTimeConverter() }
}
); Console.WriteLine(traceWriter);
// 2012-11-11T12:08:42.761 Info Started serializing Newtonsoft.Json.Tests.Serialization.Staff. Path ''.
// 2012-11-11T12:08:42.785 Info Started serializing System.DateTime with converter Newtonsoft.Json.Converters.JavaScriptDateTimeConverter. Path 'StartDate'.
// 2012-11-11T12:08:42.791 Info Finished serializing System.DateTime with converter Newtonsoft.Json.Converters.JavaScriptDateTimeConverter. Path 'StartDate'.
// 2012-11-11T12:08:42.797 Info Started serializing System.Collections.Generic.List`1[System.String]. Path 'Roles'.
// 2012-11-11T12:08:42.798 Info Finished serializing System.Collections.Generic.List`1[System.String]. Path 'Roles'.
// 2012-11-11T12:08:42.799 Info Finished serializing Newtonsoft.Json.Tests.Serialization.Staff. Path ''.
// 2013-05-18T21:38:11.255 Verbose Serialized JSON:
// {
// "Name": "Arnie Admin",
// "StartDate": new Date(
// 976623132000
// ),
// "Roles": [
// "Administrator"
// ]
// }
}
#endregion public string TestReadJsonFromFile()
{
Linq2Json l2j = new Linq2Json();
Newtonsoft.Json.Linq.JObject jarray = l2j.GetJObject4();
return jarray.ToString();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace microstore
{
public class Linq2Json
{
#region GetJObject //Parsing a JSON Object from text
public Newtonsoft.Json.Linq.JObject GetJObject()
{
string json = @"{
CPU: 'Intel',
Drives: [
'DVD read/writer',
'500 gigabyte hard drive'
]
}";
Newtonsoft.Json.Linq.JObject jobject = Newtonsoft.Json.Linq.JObject.Parse(json);
return jobject;
} /*
* //example:=>
*
Linq2Json l2j = new Linq2Json();
Newtonsoft.Json.Linq.JObject jobject = l2j.GetJObject2(Server.MapPath("json/Person.json"));
//return Newtonsoft.Json.JsonConvert.SerializeObject(jobject, Newtonsoft.Json.Formatting.Indented);
return jobject.ToString();
*/
//Loading JSON from a file
public Newtonsoft.Json.Linq.JObject GetJObject2(string jsonPath)
{
using (System.IO.StreamReader reader = System.IO.File.OpenText(jsonPath))
{
Newtonsoft.Json.Linq.JObject jobject = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.Linq.JToken.ReadFrom(new Newtonsoft.Json.JsonTextReader(reader));
return jobject;
}
} //Creating JObject
public Newtonsoft.Json.Linq.JObject GetJObject3()
{
List<Post> posts = GetPosts();
Newtonsoft.Json.Linq.JObject jobject = Newtonsoft.Json.Linq.JObject.FromObject(new
{
channel = new
{
title = "James Newton-King",
link = "http://james.newtonking.com",
description = "James Newton-King's blog.",
item =
from p in posts
orderby p.Title
select new
{
title = p.Title,
description = p.Description,
link = p.Link,
category = p.Category
}
}
}); return jobject;
}
/*
{
"channel": {
"title": "James Newton-King",
"link": "http://james.newtonking.com",
"description": "James Newton-King's blog.",
"item": [{
"title": "jewron",
"description": "4546fds",
"link": "http://www.baidu.com",
"category": "jhgj"
},
{
"title": "jofdsn",
"description": "mdsfan",
"link": "http://www.baidu.com",
"category": "6546"
},
{
"title": "jokjn",
"description": "m3214an",
"link": "http://www.baidu.com",
"category": "hg425"
},
{
"title": "jon",
"description": "man",
"link": "http://www.baidu.com",
"category": "goodman"
}]
}
}
*/
//Creating JObject
public Newtonsoft.Json.Linq.JObject GetJObject4()
{
List<Post> posts = GetPosts();
Newtonsoft.Json.Linq.JObject rss = new Newtonsoft.Json.Linq.JObject(
new Newtonsoft.Json.Linq.JProperty("channel",
new Newtonsoft.Json.Linq.JObject(
new Newtonsoft.Json.Linq.JProperty("title", "James Newton-King"),
new Newtonsoft.Json.Linq.JProperty("link", "http://james.newtonking.com"),
new Newtonsoft.Json.Linq.JProperty("description", "James Newton-King's blog."),
new Newtonsoft.Json.Linq.JProperty("item",
new Newtonsoft.Json.Linq.JArray(
from p in posts
orderby p.Title
select new Newtonsoft.Json.Linq.JObject(
new Newtonsoft.Json.Linq.JProperty("title", p.Title),
new Newtonsoft.Json.Linq.JProperty("description", p.Description),
new Newtonsoft.Json.Linq.JProperty("link", p.Link),
new Newtonsoft.Json.Linq.JProperty("category",
new Newtonsoft.Json.Linq.JArray(
from c in p.Category
select new Newtonsoft.Json.Linq.JValue(c)
)
)
)
)
)
)
)
); return rss;
}
/*
{
"channel": {
"title": "James Newton-King",
"link": "http://james.newtonking.com",
"description": "James Newton-King's blog.",
"item": [{
"title": "jewron",
"description": "4546fds",
"link": "http://www.baidu.com",
"category": ["j", "h", "g", "j"]
},
{
"title": "jofdsn",
"description": "mdsfan",
"link": "http://www.baidu.com",
"category": ["6", "5", "4", "6"]
},
{
"title": "jokjn",
"description": "m3214an",
"link": "http://www.baidu.com",
"category": ["h", "g", "4", "2", "5"]
},
{
"title": "jon",
"description": "man",
"link": "http://www.baidu.com",
"category": ["g", "o", "o", "d", "m", "a", "n"]
}]
}
}
*/ public class Post
{
public string Title { get; set; }
public string Description { get; set; }
public string Link { get; set; }
public string Category { get; set; }
}
private List<Post> GetPosts()
{
List<Post> listp = new List<Post>()
{
new Post{Title="jon",Description="man",Link="http://www.baidu.com",Category="goodman"},
new Post{Title="jofdsn",Description="mdsfan",Link="http://www.baidu.com",Category=""},
new Post{Title="jewron",Description="4546fds",Link="http://www.baidu.com",Category="jhgj"},
new Post{Title="jokjn",Description="m3214an",Link="http://www.baidu.com",Category="hg425"}
};
return listp;
} #endregion #region GetJArray
/*
* //example:=>
*
Linq2Json l2j = new Linq2Json();
Newtonsoft.Json.Linq.JArray jarray = l2j.GetJArray();
return Newtonsoft.Json.JsonConvert.SerializeObject(jarray, Newtonsoft.Json.Formatting.Indented);
//return jarray.ToString();
*/
//Parsing a JSON Array from text
public Newtonsoft.Json.Linq.JArray GetJArray()
{
string json = @"[
'Small',
'Medium',
'Large'
]"; Newtonsoft.Json.Linq.JArray jarray = Newtonsoft.Json.Linq.JArray.Parse(json);
return jarray;
} //Creating JArray
public Newtonsoft.Json.Linq.JArray GetJArray2()
{
Newtonsoft.Json.Linq.JArray array = new Newtonsoft.Json.Linq.JArray();
Newtonsoft.Json.Linq.JValue text = new Newtonsoft.Json.Linq.JValue("Manual text");
Newtonsoft.Json.Linq.JValue date = new Newtonsoft.Json.Linq.JValue(new DateTime(, , ));
//add to JArray
array.Add(text);
array.Add(date); return array;
} #endregion //待续... }
}

测试结果:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testjson.aspx.cs" Inherits="microstore.testjson" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<style type="text/css">
body{ font-family:Arial,微软雅黑; font-size:14px;}
a{ text-decoration:none; color:#;}
a:hover{ text-decoration:none; color:#f00;}
</style>
</head>
<body>
<form id="form1" runat="server">
<h3>序列化对象</h3>
表现1:<br />
<%=TestJsonSerialize()%>
<%=TestListJsonSerialize() %>
表现2:<br />
<%=TestListJsonSerialize2() %>
<hr />
<h3>反序列化对象</h3>
<p>单个对象</p>
<%=TestJsonDeserialize() %>
<p>多个对象</p>
<%=TestListJsonDeserialize() %>
<p>反序列化成数据字典Dictionary</p>
<%=TestDeserialize2Dic() %>
<hr />
<h3>自定义反序列化</h3>
<%=TestListCustomDeserialize()%>
<hr />
<h3>序列化输出的忽略特性</h3>
NullValueHandling特性忽略=><br />
<%=CommonSerialize() %><br />
<%=IgnoredSerialize()%><br /><br />
属性标记忽略=><br />
<%=OutIncluded() %><br />
<%=OutIncluded2() %>
<hr />
<h3>Serializing Partial JSON Fragments</h3>
<%=SerializingJsonFragment() %>
<hr />
<h3>ShouldSerialize</h3>
<%=ShouldSerializeTest() %><br />
<%=JJJ() %><br /><br />
<%=TestReadJsonFromFile() %>
</form>
</body>
</html>

显示:

 
 

序列化对象

表现1:

{ "Name": "Apple", "Expiry": "2014-05-04 02:08:58", "Price": 3.99, "Sizes": null }

[ { "Name": "Apple", "Expiry": "2014-05-04 02:08:58", "Price": 3.99, "Sizes": [ "Small", "Medium", "Large" ] }, { "Name": "Apple", "Expiry": "2014-05-04 02:08:58", "Price": 3.99, "Sizes": [ "Small", "Medium", "Large" ] } ]

表现2:

[ { "Name": "Apple", "Expiry": "2014-05-04 02:08:58", "Price": 3.99, "Sizes": [ "Small", "Medium", "Large" ] }, { "Name": "Apple", "Expiry": "2014-05-04 02:08:58", "Price": 3.99, "Sizes": [ "Small", "Medium", "Large" ] } ]


反序列化对象

单个对象

  • Apple
  • 2014-05-03 10:20:59
  • 3.99
  • Small,Medium,Large

多个对象

  • Apple
  • 2014-05-03 10:20:59
  • 3.99
  • Small,Medium,Large
  • Apple
  • 2014-05-03 10:20:59
  • 3.99
  • Small,Medium,Large

反序列化成数据字典Dictionary

Dictionary长度2

  • key:key1,value:zhangsan
  • key:key2,value:lisi

自定义反序列化

  • 当前List[x]对象类型:microstore.Employee
  • FirstName:Maurice
  • LastName:Moss
  • BirthDate:1981-3-8 0:00:00
  • Department:IT
  • JobTitle:Support
  • 当前List[x]对象类型:microstore.Employee
  • FirstName:Jen
  • LastName:Barber
  • BirthDate:1985-12-10 0:00:00
  • Department:IT
  • JobTitle:Manager

序列化输出的忽略特性

NullValueHandling特性忽略=>
{ "Name": "Bad Boys III", "Description": "It's no Bad Boys", "Classification": null, "Studio": null, "ReleaseDate": null, "ReleaseCountries": null }
{ "Name": "Bad Boys III", "Description": "It's no Bad Boys" }

属性标记忽略=>
{ "Model": "zhangsan", "Year": "2014-05-01T02:08:58.671875+08:00", "Features": [ "aaaa", "bbbb", "cccc" ] }
{ "Name": "zhangsan", "SalePrice": 3999.0 }


Serializing Partial JSON Fragments

  • Title:Paris Hilton - Wikipedia, the free encyclopedia
  • Content: [1] In 2006, she released her debut album...
  • Url:http://en.wikipedia.org/wiki/Paris_Hilton
  • Title:Paris Hilton
  • Content: Self: Zoolander. Socialite Paris Hilton...
  • Url:http://www.imdb.com/name/nm0385296/

ShouldSerialize

[ { "Name": "Joe Employee", "Manager": { "Name": "Mike Manager" } }, { "Name": "Mike Manager" } ]
{ "name": "Widget", "expiry": "2014-5-1 2:08:58", "price": 9.99, "sizes": [ "Small", "Medium", "Large" ] }

{ "channel": { "title": "James Newton-King", "link": "http://james.newtonking.com", "description": "James Newton-King's blog.", "item": [ { "title": "jewron", "description": "4546fds", "link": "http://www.baidu.com", "category": [ "j", "h", "g", "j" ] }, { "title": "jofdsn", "description": "mdsfan", "link": "http://www.baidu.com", "category": [ "6", "5", "4", "6" ] }, { "title": "jokjn", "description": "m3214an", "link": "http://www.baidu.com", "category": [ "h", "g", "4", "2", "5" ] }, { "title": "jon", "description": "man", "link": "http://www.baidu.com", "category": [ "g", "o", "o", "d", "m", "a", "n" ] } ] } }

http://blog.csdn.net/joyhen/article/details/24805899

Json.net 常用使用小结的更多相关文章

  1. java后台常用json解析工具问题小结

    若排版紊乱可查看我的个人博客原文地址 java后台常用json解析工具问题小结 这里不细究造成这些问题的底层原因,只是单纯的描述我碰到的问题及对应的解决方法 jackson将java对象转json字符 ...

  2. js,jQuery数组常用操作小结

    一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...

  3. Python常用模块小结

    目录 Python常用模块小结 一.Python常用模块小结 1.1 time模块 1.2 datetime模块 1.3 random模块 1.4 os模块 1.5 sys模块 1.6 json模块 ...

  4. Linux 常用工具小结:(5) lftp工具使用

    Linux 常用工具小结:(1) lftp工具使用. 这里会按照一些比较常用的功能列出,并举一个具体的例子逐一解释功能. 通常使用ftp过程是登陆ftp,浏览ftp内容,下载ftp文件,或者上传ftp ...

  5. [转]ssh常用用法小结

    ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...

  6. [转]MySQL数据库备份和还原的常用命令小结

    MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword datab ...

  7. ssh常用用法小结

    ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...

  8. [转帖]Windows批处理(cmd/bat)常用命令小结

    Windows批处理(cmd/bat)常用命令小结 非常值得学习的文档 先放这里 有时间做实验, 转载自:“趣IT”微信公共号 前言 批处理文件(batch file)包含一系列 DOS命令,通常用于 ...

  9. day16 包的使用 json time 常用模块

    复习 1.判断py文件的两种用途 提到判断__name__ == '__main__'时,会执行py文件, 直接输入main,在pycharm里按tab直接自动输入这条语句 2.解决模块相互导入的问题 ...

随机推荐

  1. Python—操作redis

    Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...

  2. mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题

    导包.... 实体类中的属性,getter,setter,tostring,构造等方法就不写了 private int id; private String orderNo; private floa ...

  3. 接触Matlab5年一个总结(Matlab要掌握的一些要点 )

    阅读目录 前言 Matlab的开发环境与简单介绍 Matlab的常见命令 Matlab的灵魂-矩阵操作 Matlab的.m或.fig的编程与技巧 从大二开始接触到matlab,讲真,这是一个我觉得很良 ...

  4. Topcoder SRM 683 Div2 B

    贪心的题,从左向右推过去即可 #include <vector> #include <list> #include <map> #include <set&g ...

  5. mysql实战之 批量update

    mysql实战之批量update 现阶段我们的业务量很小,要对admin_user表中的relationship字段进行更新,指定id是409.已知409是公司内的一服务中心,需要把该服务中心放到区代 ...

  6. C#中浮点数依IEEE-754标准转二进制串 (MODBUS 浮点数转换)

    因工作需要,把再串口通信中浮点数与字节流的数据转换函数放在这,转发的,谢谢原作者. 今天花了一天的时间搜罗资料,为了解决一个串口编程的进制转化问题.因为串口传送的浮点数据格式与IEEE-754标准(3 ...

  7. PCB走线分析——直角、差分、蛇形线

    PCB直角走线的影响   布线(Layout)是PCB设计工程师最基本的工作技能之一.走线的好坏将直接影响到整个系统的性能,大多数高速的设计理论也要最终经过 Layout 得以实现并验证,由此可见,布 ...

  8. HTML5离线缓存问题

    HTML5离线缓存问题 1.应用程序缓存 什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. ...

  9. 设置hr标签的粗细

    hr {border:0px;border-bottom:1px solid #5c5c3d;}

  10. 月薪3万的程序员告诉你:这样工作才能拿高薪(转 IT之家)

    习惯即刻回报 他不懂得只有春天播种,秋天才会有收获.刚刚付出一点点,甚至还没有付出,就想要得到回报.技术刚刚掌握,能一边百度一边干活了就觉得该拿到多少多少钱了.找工作先想着多少多少钱,入职了没干几个月 ...