CsharpJson

基于 C# 的 JSON 解析库
授权协议 GPL
开发语言 C#
所属分类 Web应用开发、 JSON/BSON开发包
软件类型 开源软件
地区 国产
投 递 者 相云
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

现有的轮子觉得不好用,又造一个,欢迎来测试提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;
        }
    }
}

 

 相关资料
  • 问题内容: 我已经完成了有关iOS中JSON的Raywenderlich教程,但是我很难将其调整为适合自己的JSON文件。这是 我的JSON : 这是 我的代码 : 日志返回。 问题答案: 你这样做是不对的。您已正确将JSON数据填充到字典(名为)中。但你有一个(被称为你的主要内部)和价值的是内部数组。 正确的代码是: 了解概念。这取决于你的内心里有什么。如果它是一个数组(在Values内部),则

  • 问题内容: 我正在尝试找到一种用C解析JSON的好方法。我真的不需要庞大的库或任何东西,我宁愿拥有体积小,重量轻,功能最少的东西,但有很好的文档。 有人有什么可以指点我的吗? 问题答案: Json并不是一门强大的语言,因此它的库可能很小(至少比Xml库要小)。 有一个整体吨C中的Json.org库链接。也许其中之一会很适合您。

  • 问题内容: 我正在尝试存储从以下请求中获取的JSON中的JSON … 得到的JSON从获得 的身体 是下面的,正如你可以看到有是JSON内的JSON,我怎么能存储 的是 JSON在 NSDictionary中 ,你可以看到,JSON是引号之间。 问题答案: 实际上,您拥有的是:经典JSON,其中有一个字符串“代表” JSON。 因此,由于我们可以这样做: NSData <=> NSString N

  • 本文向大家介绍C++解析Json的方法详解【jsoncpp】,包括了C++解析Json的方法详解【jsoncpp】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++解析Json的方法。分享给大家供大家参考,具体如下: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做

  • 问题内容: 据我所知,Objective-C,JSON Framework,YAJL和Touch JSON 有三个JSON解析器。然后,这三个将具有自己的特征。 例如: YAJL可以用作SAX样式解析器。 JSON框架的历史比较悠久,已被广泛使用。 触摸JSON解析NSData而不是NSString。 另外,据我测试,性能比较的结果如下: [快速] YAJL > JSON框架>触摸JSON [慢]

  • 问题内容: 是否有一个库(首选C#)来解决我称为多级层叠JSON的问题? 这是我的意思的示例: (Pseudocode / C#) 结果 (行为与CSS相同) 编辑1-更复杂的示例 编辑2 在对需求进行了更多思考之后,我看到了更复杂的示例永远无法按原样工作。例如,级联功能将无法知道某个电话号码是否已被修改,或者它是否是新的。为了使其工作,每个子实体都应具有唯一的标识符。 问题答案: 使用出色的JS