一个简单示例:

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. [C#技术] .NET平台开源JSON库LitJSON的使用方法

    一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemi ...

  2. .NET平台开源JSON库LitJSON的使用方法

    下载地址:LitJson.dll下载 一个简单示例: String str = "{'name':'cyf','id':10,'items':[{'itemid':1001,'itemnam ...

  3. .NET平台开源JSON序列化

    转载: http://blog.csdn.net/ddgweb/article/details/39643747 一个简单示例: String str = "{’name’:’cyf’,’i ...

  4. 开源 JSON 库解析性能对比( Jackson / Json.simple / Gson )

    Json 已成为当前服务器与 web 应用之间数据传输的公认标准. 微服务及分布式架构经常会使用 Json 来传输此类文件,因为这已经是 webAPI 的事实标准. 不过正如许多我们习以为常的事情一样 ...

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

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

  6. fastjson是阿里巴巴的开源JSON解析库

    fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}&q ...

  7. 高性能JSON库---FastJson(阿里巴巴)

    1.FastJSON简单介绍 Fastjson是一个Java语言编写的高性能功能完好的JSON库. 它採用一种"假定有序高速匹配"的算法,把JSON Parse的性能提升到极致,是 ...

  8. SNF快速开发平台MVC-EasyUI3.9之-WebApi和MVC-controller层接收的json字符串的取值方法和调用后台服务方法

    最近项目组很多人问我,从前台页面传到后台controller控制层或者WebApi 时如何取值和运算操作. 今天就都大家一个在框架内一个取值技巧 前台JS调用代码: 1.下面是选中一行数据后右键点击时 ...

  9. 28 个 C/C++ 开源 JSON 程序库性能及标准符合程度评测

    28 个 C/C++ 开源 JSON 程序库性能及标准符合程度评测 坊间有非常多的 C/C++ JSON 库,怎么选择是一个难题. [nativejson-benchmark](https://git ...

随机推荐

  1. 转自:http://blog.sina.com.cn/s/blog_86e874d30101e3d8.html(谢谢原文作者),Win7下安装CentOS 6.5双系统

    经过一下午的折腾,终于在64位的Windows 7上面成功安装了CentOS 6.5(64bit)系统,中途因为硬盘分区的问题失败了一次.下面是安装过程: 在安装过程中借助了这篇文章的内容:http: ...

  2. Beforeunload打点丢失原因分析及解决方案

    淘宝的鱼相在 2012 年 8 月份发表了一篇文章,里面讲述了他们通过一个月的数据采集试验,得到的结果是:如果在浏览器的本页面刷新之前发送打点请求,各浏览器都有不同程度的点击丢失情况,具体点击丢失率统 ...

  3. .net转php laraval框架学习系列(一) 环境搭建

    之前也没写过什么博客,可能文章结构比较混乱,想到那写到哪. 主要是把自己学习中的经验写下来. 为什么选择laravel框架,是因为laravel框架目前是Php最流行的框架,深入研究后发现和asp.n ...

  4. 使用Jstl异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannot&nbs

    错误提示是:        org.apache.jasper.JasperException: This absolute uri http://java.sun.com/jsp/jstl/core ...

  5. 转;VC++中Format函数详解

    Format是一个很常用,却又似乎很烦的方法,以下是它的完整概貌,以供大家查询之用: 一.字符串 首先看它的声明: function Format(const Format: string; cons ...

  6. Usage、Usage Minimum和Usage Maximum项目详解

    (1)一个产生多个数据域(Report Count>1)的主项目之前有一个以上的[用途]时,每个[用途]与一个数据域依次对应,如果数据域个数(Report Count)超过[用途]的个数,则剩余 ...

  7. android merge 标签的使用

    <merge xmlns:android="http://schemas.android.com/apk/res/android"> <ToggleButton ...

  8. 基本排序算法:Python实现

    基本排序算法,包括冒泡排序,插入排序,选择排序,堆排序,快速排序等. [冒泡排序] 复杂度是n*n #coding:utf8 #author:HaxtraZ #description:冒泡排序 def ...

  9. 写两个线程,一个对n每次加一,一个对n每次减一

    public class A{     private static Integer n = 0; }     public class B extends A implements Runnable ...

  10. A - Network of Schools - poj 1236(求连通分量)

    题意:学校有一些单向网络,现在需要传一些文件,1,求最少需要向几个学校分发文件才能让每个学校都收到,2,需要添加几条网络才能在任意一个学校分发都可以传遍所有学校. 分析:首先应该求出来连通分量,进行缩 ...