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

最近碰到一个问题:

在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的属性放到最后才生成?谁能解释一下呢?

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值