C#中Json解析和生成

原创
2017/12/06 13:27
阅读数 2.3K

C#Json解析和生成

当年自己是新手时,用C#写程序,在C#中解析Json着实头疼了一把。同事在用一个叫Newtonsoft.json的dll,使用方法不是很舒服,每次都得调.net版本;让人烦不胜烦。说真的,我倒现在还没弄熟Newtonsoft.json的用法,类是继承的,这玩意就很难调。我们用的json做协议,每个格式又不完全一样。。。
我们平常都是小软件一个人能完成的,急需要一个小巧又舒适的库,满足需求即可。索性自己写了一个,千行以内;不需要dll,不需要第三方组件,随时改.net版本,不需要调dll版本;能快速生成和解析自己需要的数据。源码开放,代码量少,随时可修改。
下载地址:
GitHub:https://github.com/NingShenTian/CsharpJson
码云:https://git.oschina.net/xiaoguozhier/CsharpJson

使用方法:

生成Josn:

using CsharpJson;
namespace test
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            //Json对象
            JsonObject child = new JsonObject();
            //下标形式添加键值对
            child["china"] = "hello";
            child["shanghai"] = 123;
            //调用Add方法添加键值对
            child.Add("one", "abc");
            child.Add("two", 12);
            child.Add("three", 44.9);
            //Json数组
            JsonArray arr = new JsonArray();
            arr[0] = true;
            arr[1] = 100;
            arr[2] = "你好";
            arr.Add("12");
            arr.Add(456);
            arr.Add(false);
            arr.Add(child);
            JsonObject obj = new JsonObject();
            obj.Add("中国", "china");
            obj.Add("北京", true);
            obj.Add("上海", 123);
            obj.Add("NULL",null);
            //添加对象
            obj.Add("childobj", child);
            //添加数组
            obj.Add("arrayvalue", arr);
            //定义Json文档解析类
            JsonDocument doc=new JsonDocument();
            //给文档解析类obj对象
            doc.Object=obj;
            //生成
            string val = doc.ToJson();
            Console.WriteLine("生成的Json字符串:");
            Console.WriteLine(val);
        }
    }
}

解析Json:

string data = "{\"中国\": \"china\",\"北京\": true,\"上海\": 123}";
//定义解析Json文档解析类
JsonDocument doc = JsonDocument.FromString(data);
//判断是否是object类型
if(doc.IsObject())
{
    //解析成object
    JsonObject jsobj = doc.Object;
    //遍历键值对
    foreach(string key in jsobj.Keys)
    {
        //判断类型,然后输出
        switch(jsobj[key].Valuetype)
        {
            case JsonType.BOOL:    //bool型
                Console.WriteLine("key={0},value={1}",key,jsobj[key].ToBool());
                break;
            case JsonType.NUMBER:    //数字类型
                Console.WriteLine("key={0},value={1}",key,jsobj[key].ToInt());
                break;
            case JsonType.STRING:    //字符串
                Console.WriteLine("key={0},value={1}",key,jsobj[key].ToString());
                break;
        }
    }
}
展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部