{
"录取情况(新生)": {
"全日制学生": {
"男生": "836",
"女生": "827",
"合计": "1663"
},
"在职学生": {
"男生": "836",
"女生": "827",
"合计": "1663"
}
},
"所有本科生": {
"全日制学生": {
"男生": "3317",
"女生": "3316",
"合计": "6633"
},
"在职学生": {
"男生": "1",
"女生": "7",
"合计": "8"
},
"研究生": {
"男生": "7303",
"女生": "6671",
"合计": "13974"
}
},
"宗教种族背景本科生": {
"美洲印第安人/阿拉斯加土著人": "少于1%",
"亚洲人": "15%",
"黑人": "6%",
"西班牙人": "8%",
"多种族": "3%",
"夏威夷土人/太平洋岛国居民": "少于1%",
"白人": "43%",
"种族不明": "1%"
},
"外州学生": {
"外州学生比例": "74%",
"代表的州和地区数量数量": "54"
},
"国际学生": {
"国际学生比例": "10%",
"代表的国家数量": "110"
},
"学生年龄": {
"年龄超过25岁的学生(含25岁)比例": "1%"
}
}
}
像上面这样定义类的话,序列化后能形成嵌套的调用吗?能帮忙写个代码段吗
class 哈佛大学 { public NewStuent Newstuent{ get; set; }
public object body { get; set; } public class NewStuent {
....自定义属性和字段 如果有n嵌套 也类似的写法 里面继续写class public clsss xx
{}
} } }
调用:类似下面的格式
public static string Login(string userName, string password) { Command command = new Command(); command.header = new Command.Header(); command.header.cmd = "1000"; Command.Login login = new Command.Login(); login.user = userName; login.pass = password; command.body = login; string json = JsonConvert.SerializeObject(command); return json; }
最后下面个第3方的dll Newtonsoft.Json.dll
namespace json
{
class 学校
{
public 录取情况 录取情况 {get;set;}
public class 录取情况
{
public 全日制学生 全日制学生 {get;set;}
public class 全日制学生
{
public 学生 学生 {get;set;}
}
public 在职学生 在职学生 {get;set;}
public class 在职学生
{
public 学生 学生 { get; set; }
}
}
public class 所有本科生
{
public 全日制学生 全日制学生 {get;set;}
public class 全日制学生
{
public 学生 学生 {get;set;}
}
public 在职学生 在职学生 {get;set;}
public class 在职学生
{
public 学生 学生 {get;set;}
}
public 研究生 研究生 {get;set;}
public class 研究生
{
public 学生 学生 { get; set; }
}
}
public class 学生
{
public int 男生 { get; set; }
public int 女生 { get; set; }
public int 合计 { get; set; }
}
}
}
这是写好的类了,可是赋值的时候不会了。
@叶落无声1: 代码:
[DataContract] class 学校 { [DataMember(Order = 1, IsRequired = true)] public object 录取情况 { get; set; } public class 全日制 { public object 全日制学生 { get; set; } } public class 在职学 { public object 在职学生 { get; set; } } public class 研究 { public object 研究生 { get; set; } } public class 学生 { public int 男生 { get; set; } public int 女生 { get; set; } public int 合计 { get; set; } } public class 所有本科 { [DataMember(Order = 1, IsRequired = true)] public object 所有本科生 { get; set; } } }
赋值调用:
学校 xy = new 学校(); 学校.全日制 qr = new 学校.全日制(); 学校.学生 xs= new 学校.学生(); xs.合计 = 1663; xs.男生 = 836; xs.女生 = 827; qr.全日制学生 = xs; 学校.在职学 在职学 = new 学校.在职学(); 在职学.在职学生 = xs; 学校.所有本科 bk = new 学校.所有本科(); 学校.研究 yj = new 学校.研究(); yj.研究生 = xs; bk.所有本科生 = new { qr.全日制学生, 在职学.在职学生,yj.研究生 }; xy.录取情况 = new { qr.全日制学生, 在职学.在职学生 ,bk.所有本科生};//这个是最外面的一层 意思是所有子类赋值好了最终赋值给最外层 ////或者用JavaScriptSerializer jss = new JavaScriptSerializer(); ///jss.Serialize(目标) ///因为我是在控制台测试不知道为什么没附加成功这个是微软内置的dll 也有可能是控制程序的问题或者netformwrok版本的问题 ///在webform mvc可以用 string json = JsonConvert.SerializeObject(xy);//Newtonsoft.Json.dll
剩下的几个你自己写吧 我也写累了
运行结果图:
最后说下命名不要用中文 看着就头疼!
@s_p: 非常感谢,很好的解决了问题
@叶落无声1: 客气 我以前也常在博客园提问也有很多人帮我解决问题!
@s_p: 不好意思,结帖的时候选错最佳答案了,真的非常感谢
使用嵌套类,可以序列化成这个样子。要理清序列化时对类属性的地址。name为类的属性,value为类的属性值。