[C#] CHO.Json操作Json数据

这是一个类似于Newtonsoft.Json的项目, 但与其有些出入。

这是它与Newtonsoft.Json的差别:

  • CHO.Json支持你像Python那样不需要实体类而简便的操作小型数据, 也支持将类的实例序列化为Json文本与将分析完毕的Json数据反序列化为特定类的实例
  • CHO.Json少了许多冗余的功能, 例如将图片序列化为字符串, 因此CHO.Json可能要比Newtonsoft.Json轻量许多。
  • CHO.Json的源代码比Newtonsoft.Json更适合初学者阅读, 在看懂它的代码后, 你会了解到有限状态机以及反射
  • CHO.Json仅使用一个C#源文件, 这是因为它的源代码仅有1k行左右, 这其中还包含类型转换等片段
    下面是使用CHO.Json的例子:
using System;
using System.Collections.Generic;
using CHO.Json;

namespace JsonDemo
{
    class Program
    {
        static void Main(string args)
        {
            Person person = new Person();
            person.name = "Null";
            person.age = 16;
            person.habit = new List<string>();
            person.habit.Add("programming");
            person.habit.Add("animation");
            JsonData jsonData = JsonData.Serialize(person);
        	Console.WriteLine(jsonData.ToJsonText());
        }
        class person
        {
            public string name;
            public int age;
            public List<string> habit;
        }
    }
}
using System;
using CHO.Json;

namespace CSharpJson
{
    class Program
    {
        static void Main(string[] args)
        {
            JsonData json = JsonData.Parse("{\n    \"姓名\": \"小明\",\n    \"性别\": \"男\",\n    \"年龄\": 16,\n    \"境内\": true,\n    \"自述\": null,\n    \"学习科目\": [\n         \"语文\",\n         \"数学\",\n         \"英语\",\n         \"信息技术\"\n     ]\n}");
            if (json.DataType == JsonDataType.Object)
            {
                foreach(JsonData key in json.GetKeys())
                {
                    Console.WriteLine(string.Format("{0}: {1}", key.ToJsonText(), json[key].ToJsonText()));
                }
            }
            else
            {
                Console.WriteLine("读取出现了错误");
            }
            Console.ReadKey();
        }
    }
}

项目完整源代码: Github仓库

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页