public class Person
{
public string Name { get; set; }
public List<Book> Books { get; set; }
public int Age { get; set; }
[Newtonsoft.Json.JsonProperty("4Test")]
public string FTest { get; set; }
public string NullTest { get; set; }
}
public class Book
{
public string BookName { get; set; }
}
public static SortedDictionary<string, object> KeySort(JObject obj)
{
var res = new SortedDictionary<string, object>();
foreach (var x in obj)
{
if (x.Value is JValue) res.Add(x.Key, x.Value);
else if (x.Value is JObject) res.Add(x.Key, KeySort((JObject)x.Value));
else if (x.Value is JArray)
{
var tmp = new SortedDictionary<string, object>[x.Value.Count()];
for (var i = 0; i < x.Value.Count(); i++)
{
tmp[i] = KeySort((JObject)x.Value[i]);
}
res.Add(x.Key, tmp);
}
}
return res;
}
protected void Page_Load(object sender, EventArgs e)
{
Person p1 = new Person();
List<Book> books = new List<Book>();
Book b1 = new Book();
b1.BookName = "哈利波特";
Book b2 = new Book();
b2.BookName = "晚景仙踪";
books.Add(b1);
books.Add(b2);
p1.Name = "呸呸呸";
p1.Age = 13;
p1.Books = books;
p1.FTest = "344";
//序列化并按照字母顺序排序
Newtonsoft.Json.JsonSerializerSettings setting = new Newtonsoft.Json.JsonSerializerSettings();
setting.NullValueHandling =Newtonsoft.Json.NullValueHandling.Ignore ;//Null值不序列化
string json=Newtonsoft.Json.JsonConvert.SerializeObject(p1, Newtonsoft.Json.Formatting.None, setting);
var a =JObject.Parse(json);
var target = KeySort(a);
json = Newtonsoft.Json.JsonConvert.SerializeObject(target);
}