C#中Json解析和生成

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/CsharpJsongit

使用方法:

生成Josn:github

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: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;
        }
    }
}
相關文章
相關標籤/搜索