[C#技术] .NET平台开源JSON库LitJSON的使用方法

简介: 原文:[C#技术] .NET平台开源JSON库LitJSON的使用方法一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemid’:1002,’itemname’...
原文: [C#技术] .NET平台开源JSON库LitJSON的使用方法

一个简单示例:

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。

与以下这几个.Net平台上的开源JSON库相比,LitJSON的性能遥遥领先:

Jayrock version 0.9.8316

LitJSON version 0.3.0

Newtonsoft Json.NET version 1.1

下面介绍LitJSON中常用的方法:

以下示例需要先添加引用LitJson.dll,再导入命名空间 using LitJson;

点击直接下载LitJSON.dll,也可以到http://litjson.sourceforge.net去下载。 

1、Json 与 C#中 实体对象 的相互转换

例 1.1:使用 JsonMapper 类实现数据的转换

ublic 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"}]
    }
}

更详细的可参考 http://litjson.sourceforge.net/doc/manual.html (英文)

目录
相关文章
|
12天前
|
人工智能 运维 算法
基于 C# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
46 3
|
29天前
|
Shell 网络安全 C#
一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
|
19天前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
|
1月前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
46 2
|
2月前
|
人工智能 自然语言处理 数据中心
D1net阅闻|DeepSeek开源放大招:FlashMLA让H800算力狂飙!曝光低成本秘笈
D1net阅闻|DeepSeek开源放大招:FlashMLA让H800算力狂飙!曝光低成本秘笈
|
3月前
|
开发框架 前端开发 .NET
一个适用于 .NET 的开源整洁架构项目模板
一个适用于 .NET 的开源整洁架构项目模板
85 26
|
3月前
|
Web App开发 Linux C#
C# 网页截图全攻略:三种技术与 Chrome 路径查找指南
本文主要介绍了在 C# 中实现网页截图的几种技术及相关要点。涵盖了 PuppeteerSharp、Selenium 和 HtmlToImage 三种方式,分别阐述了它们的安装步骤及核心代码。同时,针对在 C# 中寻找 Windows 上 chrome.exe 路径这一问题,分析了未安装 Google Chrome 和已安装两种情况下的查找原因,并给出了相关参考链接,还列举了一系列与 C# 使用 Selenium、获取 chrome.exe 路径以及在 Linux 上部署相关的参考资料。
128 11
|
4月前
|
区块链 C# Windows
PasteEx:一款.NET开源的Windows快捷粘贴神器
PasteEx:一款.NET开源的Windows快捷粘贴神器
81 17
|
4月前
|
XML C# 数据格式
一个.NET开源、免费、功能强大的 PDF 处理工具
一个.NET开源、免费、功能强大的 PDF 处理工具
107 8
|
4月前
|
开发框架 JavaScript 前端开发
精选2款.NET开源的博客系统
精选2款.NET开源的博客系统