C#中使用JSON.NET动态解析JSON

         JSON.NET提供了强大的JSON序列化器,同时具有高级别和低级别的组件,可通过二进制序列化JSON, 支持JSON契约, 可处理XML到JSON格式的转换,提供LINQ TO JSON的访问方式,可序列化.NET任何内置的对象。在ASP.NET MVC API中,JSON.NET作为其默认的序列化器,可通过NUGET直接引入到Web API项目。JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合、字典、动态对象和匿名对象)

准备工作:需要引入json程序包。

C#中使用JSON.NET动态解析JSON_第1张图片C#中使用JSON.NET动态解析JSON_第2张图片
C#中使用JSON.NET动态解析JSON_第3张图片

JObject和JArray创建JSON对象

using System;
using Newtonsoft.Json.Linq;

namespace JsonAuthorNliki
{
    class Program
    {
        static void Main(string[] args)
        {
            var jObj = new JsonOutput();
            jObj.JObjectOutput();
            Console.ReadLine();
        }
    }

    class JsonOutput
    {
        public void JObjectOutput()
        {
            //创建JObject对象
            var jsonObjec = new JObject();
            jsonObjec.Add("Contact Information", DateTime.Now.ToShortDateString());

            //动态创建字段(*使用dynamic关键字直观地创建动态对象,并把这个动态对象序列化为JSON字符串)
            dynamic authorInfo = jsonObjec;
            authorInfo.Name = "Nliki";
            authorInfo.Email = "[email protected]";
            authorInfo.Telephone = "152xxxxxxxxxx";

            //JArray创建JSON对象
            var myHobby = new JArray();
            myHobby.Add("hobby one");
            myHobby.Add("hobby two");
            myHobby.Add("hobby three");
            authorInfo.Hobby = myHobby;

            Console.WriteLine(jsonObjec.ToString());

        }


    }
}

运行结果:

{
  "Contact Information": "2019/8/7",
  "Name": "Nliki",
  "Email": "[email protected]",
  "Telephone": "152xxxxxxxxxx",
  "Hobby": [
    "hobby one",
    "hobby two",
    "hobby three"
  ]
}

通过JObject.Parse()和JArray.Parse()方法导入JSON格式

       JValue结构支持Parse()和Load()方法,这两个方法可以分别从字符串或各种流读取JSON数据。JValue包括最核心的JSON 解析能力,支持将字符串转化为我们熟悉的动态对象

using System;
using Newtonsoft.Json.Linq;

namespace JsonAuthorNliki
{
    class Program
    {
        static void Main(string[] args)
        {
            var jObj = new JsonOutput();
            jObj.JObjectOutput();
            Console.ReadLine();
        }
    }

    class JsonOutput
    {
        public void JObjectOutput()
        {
            //从字符串读取JSON数据
            var jsonString = @"{""Name"":""Nliki"",""Email"":""[email protected]"",""Telephone"":""152xxxxxxxxxx""}";
            dynamic jsonStr = JValue.Parse(jsonString);
            string name = jsonStr.Name;
            string email = jsonStr.Email;
            string telephone = jsonStr.Telephone;

            Console.WriteLine(jsonStr.ToString());

        }

    }
}

     在很多项目中我们都会用到JSON相关东西,比如游戏中配置文件,我们有的时候需要动态的更改游戏配置。(对于Unity同学来说,可以了解下JSONDotNet。)

你可能感兴趣的:(C#编程,Unity3D)