Json.net 常用使用小结(推荐)
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(3).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(3).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[0];
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(30)]
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 = 30,
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(5)
};
return Newtonsoft.Json.JsonConvert.SerializeObject(car, Newtonsoft.Json.Formatting.Indented);
}
public string OutIncluded2()
{
Computer com = new Computer
{
Name = \"zhangsan\",
SalePrice = 3999m,
Manufacture = \"red\",
StockCount = 5,
WholeSalePrice = 34m,
NextShipmentDate = DateTime.Now.AddDays(5)
};
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 = 34,
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(2000, 12, 12, 12, 12, 12, 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=\"6546\"},
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(2000, 5, 23));
//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:#333;}
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\" ] } ] } }
以上这篇Json.net 常用使用小结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持phpstudy。
本文地址:https://www.stayed.cn/item/9366
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我