首页 > 编程语言 > 详细

Newtonsoft Json序列化按照字母顺序排序,修改属性名称

时间:2020-04-25 16:55:47      阅读:594      评论:0      收藏:0      [点我收藏+]
    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);
        }

 

Newtonsoft Json序列化按照字母顺序排序,修改属性名称

原文:https://www.cnblogs.com/lidaying5/p/12773817.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!