为什么c#类生成json格式的次序是倒的?

来源:互联网 发布:画线路板软件 编辑:程序博客网 时间:2024/05/17 09:23

最近碰到一个问题:

在C#里生成json格式字符串的时候,发现生成出来的顺序是颠倒的,如下图中的类:

public class Person        {            public string name{get;set;}//姓名            public int age{get;set;} //年龄            public bool sex_is_male{get;set;} //性别            public struct Partner //伙伴            {                public string partner_name{get;set;} //伙伴姓名                public int partner_age{get;set;} //伙伴年龄                public bool partner_sex_is_male{get;set;} //伙伴性别            }            public Partner partner;            public string[] achievement; //成就        }//设置一个Person类        Person p = new Person();        p.name = "Tsybius";        p.age = 23;        p.sex_is_male = true;        p.partner.partner_name = "Galatea";        p.partner.partner_age = 21;        p.partner.partner_sex_is_male = false;        p.achievement = new string[] { "ach1", "ach2", "ach3" };//直接输出        Console.WriteLine("Formatting.None:");        string json1 = JsonConvert.SerializeObject(p);        Console.WriteLine(json1 + "\n");

生成的结果如下:

{"partner":{"partner_name":"Galatea","partner_age":21,"partner_sex_is_male":false},"achievement":["ach1","ach2","ach3"],"name":"Tsybius","age":23,"sex_is_male":true}

百思不得其解,百度以后,发现一篇文章里,类的声明与我不同,是如下结构:

public class Person    {        public string name; //姓名        public int age; //年龄        public bool sex_is_male ; //性别        public struct Partner //伙伴        {            public string partner_name;//伙伴姓名            public int partner_age ; //伙伴年龄            public bool partner_sex_is_male; //伙伴性别        }        public Partner partner;        public string[] achievement; //成就    }

赶紧试了一下,问题解决了!如下输出:
{“name”:”Tsybius”,”age”:23,”sex_is_male”:true,”partner”:{“partner_name”:”Galatea”,”partner_age”:21,”partner_sex_is_male”:false},”achievement”:[“ach1”,”ach2”,”ach3”]}

原因也说不清楚,不知道为什么会把封装setget的属性放到最后才生成?谁能解释一下呢?

0 0
原创粉丝点击