首页 新闻 赞助 找找看

json序列化问题

0
悬赏园豆:20 [已解决问题] 解决于 2013-06-28 09:43


{
    "录取情况(新生)": {
        "全日制学生": {
            "男生": "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%"
        }
    }
}
像上面这样定义类的话,序列化后能形成嵌套的调用吗?能帮忙写个代码段吗

邱育华的主页 邱育华 | 初学一级 | 园豆:10
提问于:2013-06-22 22:25
< >
分享
最佳答案
0
    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

收获园豆:20
s_p | 初学一级 |园豆:138 | 2013-06-26 13:09

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; }
          }
             
       
    }
}

这是写好的类了,可是赋值的时候不会了。

邱育华 | 园豆:10 (初学一级) | 2013-06-27 10:49

@叶落无声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 | 园豆:138 (初学一级) | 2013-06-27 12:03

@s_p: 非常感谢,很好的解决了问题

邱育华 | 园豆:10 (初学一级) | 2013-06-28 09:42

@叶落无声1: 客气 我以前也常在博客园提问也有很多人帮我解决问题!

s_p | 园豆:138 (初学一级) | 2013-06-28 09:44

@s_p: 不好意思,结帖的时候选错最佳答案了,真的非常感谢

邱育华 | 园豆:10 (初学一级) | 2013-06-28 09:45
其他回答(2)
0

使用工具 http://www.bejson.com/go.php?u=http://www.bejson.com/index.php

看看

你最后多了一个}

火地晋 | 园豆:106 (初学一级) | 2013-06-22 23:07
0

使用嵌套类,可以序列化成这个样子。要理清序列化时对类属性的地址。name为类的属性,value为类的属性值。

幻天芒 | 园豆:37175 (高人七级) | 2013-06-23 12:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册