一个简单示例:

String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemid’:1002,’itemname’:’hello2’}]}";              
//*** 读取JSON字符串中的数据 *******************************            
JsonData jd = JsonMapper.ToObject(str);          
String name = (String)jd["name"];  
long id = (long)jd["id"];            
JsonData jdItems = jd["items"];      
int itemCnt = jdItems.Count; 
// 数组 items 中项的数量 
foreach (JsonData item in jdItems)
// 遍历数组 items            
{int itemID = (int)item["itemid"];                
String itemName = (String)item["itemname"];        
}

//*** 将JsonData转换为JSON字符串 ***************************

String str2 = jd.ToJson();

LitJSON是一个.NET平台下处理JSON格式数据的类库,小巧、快速。它的源代码使用C#编写,可以通过任何.Net平台上的语言进行调用,目前最新版本为LitJSON 0.5.0。

下面介绍LitJSON中常用的方法:
以下示例需要先添加引用LitJson.dll,再导入命名空间 using LitJson;
可以到http://litjson.sourceforge.net去下载。

1、Json 与 C#中 实体对象 的相互转换
例 1.1:使用 JsonMapper 类实现数据的转换
public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public DateTime Birthday { get; set; }
    }
    public class JsonSample
    {
        public static void Main()
        {
            PersonToJson();
            JsonToPerson();
        }
        /// 
        /// 将实体类转换成Json格式
        /// 
        public static void PersonToJson()
        {
            Person bill = new Person();
            bill.Name = "www.87cool.com";
            bill.Age = 3;
            bill.Birthday = new DateTime(2007, 7, 17);
            string json_bill = JsonMapper.ToJson(bill);
            Console.WriteLine(json_bill);
            //输出:{"Name":"www.87cool.com","Age":3,"Birthday":"07/17/2007 00:00:00"}
        }

/// 
        /// 将Json数据转换成实体类
        /// 
        public static void JsonToPerson()
        {
            string json = @"
            {
                ""Name""    : ""www.87cool.com"",
                ""Age""      : 3,
                ""Birthday"" : ""07/17/2007 00:00:00""
            }";
            Person thomas = JsonMapper.ToObject(json);
            Console.WriteLine("’87cool’ age: {0}", thomas.Age);
            //输出:’87cool’ age: 3
        }
    }

例 1.2:使用 JsonMapper 类将Json字符串转换为C#认识的JsonData,再通过Json数据的属性名或索引获取其值。

在C#中读取JsonData对象 和 在JavaScript中读取Json对像的方法完全一样;

对Json的这种读取方式在C#中用起来非常爽,同时也很实用,因为现在很多网络应用提供的API所返回的数据都是Json格式的,

如Flickr相册API返回的就是json格式的数据。
        public static void LoadAlbumData(string json_text)
        {
            JsonData data = JsonMapper.ToObject(json_text);
            Console.WriteLine("Album’s name: {0}", data["album"]["name"]);
            string artist = (string)data["album"]["name"];
            int year = (int)data["album"]["year"];
            Console.WriteLine("First track: {0}", data["album"]["tracks"][0]);
        }

2、C# 中对 Json 的 Readers 和 Writers

例 2.1:JsonReader类的使用方法 
public class DataReader
{
    public static void Main ()
    {
        string sample = @"{
            ""name""  : ""Bill"",
            ""age""  : 32,
            ""awake"" : true,
            ""n""    : 1994.0226,
            ""note""  : [ ""life"", ""is"", ""but"", ""a"", ""dream"" ]
          }";
        ReadJson (sample);
    }
    //输出所有Json数据的类型和值
    public static void ReadJson (string json)
    {
        JsonReader reader = new JsonReader (json);
        
        Console.WriteLine ("{0,14} {1,10} {2,16}", "Token", "Value", "Type");
        Console.WriteLine (new String (’-’, 42));
        while (reader.Read())
        {
            string type = reader.Value != null ? reader.Value.GetType().ToString() : "";
            Console.WriteLine("{0,14} {1,10} {2,16}", reader.Token, reader.Value, type);
        }
    }
}
      
//输出结果:

//      Json类型        值          C#类型
//------------------------------------------
//  ObjectStart                            
//  PropertyName      name    System.String
//        String      Bill    System.String
//  PropertyName        age    System.String
//          Int        32    System.Int32
//  PropertyName      awake    System.String
//      Boolean      True  System.Boolean
//  PropertyName          n    System.String
//        Double  1994.0226    System.Double
//  PropertyName      note    System.String
//    ArrayStart                            
//        String      life    System.String
//        String        is    System.String
//        String        but    System.String
//        String          a    System.String
//        String      dream    System.String
//      ArrayEnd                            
//    ObjectEnd

例 2.2:JsonWriter类的使用方法 
public class DataReader
{
    //通过JsonWriter类创建一个Json对象
    public static void WriteJson ()
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        JsonWriter writer = new JsonWriter (sb);
        writer.WriteArrayStart ();
        writer.Write (1);
        writer.Write (2);
        writer.Write (3);
        writer.WriteObjectStart ();
        writer.WritePropertyName ("color");
        writer.Write ("blue");
        writer.WriteObjectEnd ();
        writer.WriteArrayEnd ();
        Console.WriteLine (sb.ToString ());
        //输出:[1,2,3,{"color":"blue"}]
    }
}

.NET平台开源JSON库LitJSON的使用方法相关推荐

  1. 开源JSON库Rapidjson与cJSON对比

    项目需要解析和构造JSON格式的数据,由于项目使用C++编程,所以比较了一下基于C/C++的开源JSON解析库.当前,差不多40多种基于C/C++的开源JSON库在使用,经过一番比较,最终决定在Rap ...

  2. 教程-delphi的开源json库:superobject,用法简介

    困惑一天的问题 一个语句搞定了... 回头细说. superobject中的{$DEFINE UNICODE} 就是它,这是json官方推荐的Delphi处理json的包,地址: http://www ...

  3. c# 对象json互相转换_Go语言进阶之路(六):内置JSON库和开源库gjson

    Go语言内置了部分JSON函数,可以方便地在Go语言结构体实例和JSON字符串之间互相转换.这可比Java强多了. 不过Go语言内置的json库功能比较鸡肋,只能在结构体和JSON之间相互转换,没办法 ...

  4. .NET平台功能最强大,性能最佳的JSON库

    转自:陈鑫伟 cnblogs.com/Dogwei/p/10372436.html Swifter.Json 这是迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库. Git ...

  5. 开源 C++ JSON 库 sonic-cpp解析性能为 rapidjson 的 2.5 倍

    sonic-cpp 是由字节跳动 STE 团队和服务框架团队共同研发的一款面向 C++ 语言的高效 JSON 库,极致地利用当前 CPU 硬件特性与向量化编程,大幅提高了序列化反序列化性能,解析性能为 ...

  6. Android平台开源项目

    本文收集了比较不错的Android开源项目,研究开源项目是对Android平台掌握的一个最佳的方式. 由Android的核心开发团队提供了15个优秀的示例项目,包含了游戏.图像处理.时间显示.开始菜单 ...

  7. 开源的库RestSharp轻松消费Restful Service

    现在互联网上的服务接口都是Restful的,SOAP的Service已经不是主流..NET/Mono下如何消费Restful Service呢,再也没有了方便的Visual Studio的方便生产代理 ...

  8. c# json datatable_KoobooJson一款高性能且轻量的JSON库

    (给DotNet加星标,提升.Net技能) 转自:小曾看世界 cnblogs.com/1996V/p/10607916.html KoobooJson - 更小更快的C# JSON序列化工具(基于表达 ...

  9. 数据可视化分析平台开源方案集锦

    B/S 架构的数据可视化分析平台开源方案不完全集锦,供各位参考. 排名不分先后.欢迎补充. kibana Elasticsearch 专用的数据分析检索仪表盘.ELK Stack 中的 K. 日志系统 ...

最新文章

  1. 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续
  2. 《小程序个人信息保护研究报告》解读
  3. NumSharp v0.8.0 发布,C# 张量计算库
  4. 鸿蒙 github harmony,鸿蒙HarmonyOS之AbilitySlice间导航
  5. 响应式注意要添加“视口”约束标记---viewport
  6. 实现串匹配的并行算法_5-1-KMP模式匹配
  7. 投票彰显电信合约机诺基亚Lumia 800C受热捧
  8. php设置cookie值,PHP如何设置和取得Cookie值
  9. U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法
  10. Java:实现文件批量导入导出实践(兼容xls,xlsx)
  11. 【超级账本】Fabric 层次结构以及核心模块的介绍(二)
  12. Hadoop FS 常用命令详解
  13. 不仅仅是游戏,王者荣耀如何突破次元壁?
  14. 魔百盒CM201-2_YS(易视腾代工)_MV300/300H芯片_蓝牙语音版_卡刷通刷_刷机固件
  15. 计算机查找保存的文件,电脑保存文件到哪里找
  16. 抖音发广告需要注意什么,三个注意事项与规范要牢记
  17. C#中感叹号(!) 的作用总结
  18. 【RISC-V】SiFive Unmatched开发板开发手记
  19. 简单使用命令行创建数据库
  20. 大学计算机实验教程制作电子小报,word使用教程:制作电子小报

热门文章

  1. 计算—工厂模式模式(练习)
  2. 第三届2022MathorCup高校数学建模挑战赛大数据论文加代码(附详解)
  3. Excel批量将固定格式的源数据提取到一个表中
  4. 1.5 08:多边形内角和
  5. Buuctf Misc小明的保险箱(暴力破解)
  6. 调制方式matlab代码_基础的几种实现
  7. 通才与专家_成为通才
  8. 【2021新教程】win10安装汇编环境(Dosbox+masm)
  9. 部署CloudSim云计算仿真平台
  10. Java内存模型(JMM)详解!