CsharpJson 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
CsharpJson 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
CsharpJson 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 GPL
开发语言 C#
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 小果汁儿
适用人群 未知
收录时间 2017-06-25

软件简介

现有的轮子觉得不好用,又造一个,欢迎来测试提bug!

经常拿 JSON 当协议用,结果发现好多解析库,每次解析都要先定义类,想找个通用的都不是很满意。拿 JSON 当协议,会定义几种格式,这样的话要解析就得每种都定义个类,然后又没法判断哪种格式对应那个类,总之感觉难用,所以就动手写了一个。

生成 JSON:

using CsharpJson;
namespace test
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            JsonObject child = new JsonObject();
            child["china"] = "hello";
            child["shanghai"] = 123;
            child.Add("one", "abc");
            child.Add("two", 12);
            child.Add("three", 44.9);

            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);
            JsonDocument doc=new JsonDocument();
            doc.Object=obj;
            string val = doc.ToJson();
            Console.WriteLine("生成的Json字符串:");
            Console.WriteLine(val);
        }
    }
}

解析 JSON:

string data = "{\"中国\": \"china\",\"北京\": true,\"上海\": 123}";
doc = JsonDocument.FromString(data);
if(doc.IsObject())
{
    JsonObject jsobj = doc.Object;
    foreach(string key in jsobj.Keys)
    {
        switch(jsobj[key].Valuetype)
        {
            case JsonType.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;
        }
    }
}

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (3)

加载中
小果汁儿软件作者
打分: 力荐
自己写的C#Json解析/生成库,1000行以内,小巧玲珑;使用时直接把代码4文件复制到项目中,也可以做成dll,只有13k;不需要事先定义类,语法简单易懂,支持.net2.0到.net最新;原生C#不含第三方代码,支持mono跨平台,欢迎使用!
2017/12/06 12:52
回复
举报
输入是long 类型 1505491633211333149,出来给我变成了double类型。还科学计数法显示出来了,我真是服了
2017/09/17 18:03
回复
举报
“每次解析都要先定义类,想找个通用的没找到” json.net 有一个 JObject。。。。 一般 json 库都会有一个通用的。。。。
2017/06/26 09:38
回复
举报
更多评论
暂无内容
暂无内容
暂无内容
3 评论
21 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部