美文网首页程序员技术栈程序员C#
C#通过匿名类直接使用访问JSON数据

C#通过匿名类直接使用访问JSON数据

作者: suikhan | 来源:发表于2018-02-09 16:06 被阅读49次

    2018年02月09日,于石门。

    实验目的

    在C#和Rest/Restful以及其它的Web服务交互过程中,大量使用到JSON传递数据,如何快捷的转化C#对象到JSON和转化JSON到C#对象,成为开发过程中频繁使用的内容。传统的方式下,我们需要定义和JSON对象同步的C#类并实例化成对象以遍操作,这里提供了一个直接使用匿名类的方式,相较于传统方式可以少定义一些类,操作更加简便。

    开发环境

    2018-02-09-15-22-23.png

    实现步骤

    1.创建工程:控制台程序,命名为JsonTest

    2018-02-09-15-29-43.png

    2.添加组件:增加JSON组件

    第一步:右键点击项目,选择“管理NuGet程序包”菜单

    2018-02-09-15-32-31.png

    第二步:在"NuGet: JsonTest"选项卡中选择浏览,输入json后回车,选择Newtonsoft.Json,选择版本后点击安装按钮。

    2018-02-09-15-35-12.png

    第三步:完成安装

    2018-02-09-15-37-13.png

    3.编写代码:简单结构

    JSON格式如下:

    {
        "name":"张三",
        "sex":"男",
        "birthday": "2018-02-09"
    }
    

    CSharp代码

    using Newtonsoft.Json;
    using System;
    
    namespace JsonTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                string jsonstr = JsonConvert.SerializeObject(new
                {
                    name = "张三",
                    sex = "男",
                    birthday = "2018-02-09"
                });
                Console.WriteLine("对象序列化后的字符串为:");
                Console.WriteLine(jsonstr);
    
                Console.WriteLine("\n\n字符串反序列化为对象后的值为:");
                var jsonobj = JsonConvert.DeserializeObject<dynamic>(jsonstr);
    
                Console.WriteLine("姓名:" + jsonobj.name);
                Console.WriteLine("性别:" + jsonobj.sex);
                Console.WriteLine("生日:" + jsonobj.birthday);
                Console.Read();
            }
        }
    }
    

    执行结果

    2018-02-09-15-46-47.png

    4.编写代码:数组的操作

    CSharp代码

    using Newtonsoft.Json;
    using System;
    
    namespace JsonTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                string jsonstr = JsonConvert.SerializeObject(new[]{
                    new {
                        name = "张三",
                        sex = "男",
                        birthday = "2018-02-09"
                    },
                    new{
                        name = "李四",
                        sex = "男",
                        birthday = "2018-02-09"
                    }
                });
                Console.WriteLine("对象序列化后的字符串为:");
                Console.WriteLine(jsonstr);
    
                Console.WriteLine("\n\n字符串反序列化为对象后的值为:");
                var jsonarr = JsonConvert.DeserializeObject<dynamic[]>(jsonstr);
                foreach (var jsonobj in jsonarr)
                {
                    Console.WriteLine("姓名:" + jsonobj.name);
                    Console.WriteLine("性别:" + jsonobj.sex);
                    Console.WriteLine("生日:" + jsonobj.birthday);
                    Console.WriteLine("---------------");
                }
                Console.Read();
            }
        }
    }
    

    执行结果

    2018-02-09-15-55-34.png

    相关文章

      网友评论

        本文标题:C#通过匿名类直接使用访问JSON数据

        本文链接:https://www.haomeiwen.com/subject/rizftftx.html