为什么c#类生成json格式的次序是倒的?
2016-06-30 13:58
393 查看
最近碰到一个问题:
在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的属性放到最后才生成?谁能解释一下呢?
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- 使用 Python 处理 JSON 格式的数据
- String.intern
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- newtonsoft.json解析天气数据出错解决方法
- C#中struct和class的区别详解
- PostgreSQL ERROR: invalid escape string 解决办法
- VBS ArrayList Class vbs中的数组类
- vbs 解析json jsonp的方法
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法