zoukankan      html  css  js  c++  java
  • Newtonsoft Json序列化按照字母顺序排序,修改属性名称

        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);
            }
  • 相关阅读:
    lambda表达式
    C#_单例模式
    Authorize的Forms认证
    10. windows下原来可以这样隐藏webshell
    8. php回调后门
    7. 编辑器漏洞整理
    6. webshell文件上传分析溯源
    1.5 webshell文件上传漏洞分析溯源(1~4)
    1.4 DVWA亲测文件上传漏洞
    1.3 任意文件查看与下载漏洞
  • 原文地址:https://www.cnblogs.com/lidaying5/p/12773817.html
Copyright © 2011-2022 走看看