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

LitJson.dll下载

一个简单示例:

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;

下载

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

}

}

时间: 2024-07-30 01:44:17

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

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

困惑一天的问题 一个语句搞定了... 回头细说. superobject中的{$DEFINE UNICODE} 就是它,这是json官方推荐的Delphi处理json的包,地址: http://www.progdigy.com/?page_id=6 superobject中自动默认为UNICODE编码,处理中文会出现乱码. 注释{$DEFINE UNICODE} 就可以了. var    j, a: ISuperObject; //不能是TSuperObject,尽管有TSuperObject这

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

fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}", VO.class); //反序列化 https://github.com/alibaba/fastjson/wiki/Quick-Start-CN fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串

Android开源工具库

 一.依赖注入DI 通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作 1. AndroidAnnotations(Code Diet) android快速开发框架 项目地址:https://github.com/excilys/androidannotations 文档介绍:https://github.com/excilys/androidannotations/wiki 官方网站:http://androidannotations.org/ 特点:(1)依赖注入:包

开源的库RestSharp轻松消费Restful Service

现在互联网上的服务接口都是Restful的,SOAP的Service已经不是主流..NET/Mono下如何消费Restful Service呢,再也没有了方便的Visual Studio的方便生产代理的工具了,你还在用HttpWebRequest 自己封装吗?Restful Service还有授权问题,自己写出来的代码是不是很不优雅?通常Restful Service返回的数据格式是XML或者Json,还要设置服务的输入参数等等,使用起来很复杂.本文向你推荐一个开源的库RestSharp轻松消费

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

1.FastJSON简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种"假定有序快速匹配"的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库. 下载  你可以从以下地址中下载fastjson: Maven中央仓库 http://repo1.maven.org/maven2/com/alibaba/fastjson/ Alibaba OpenSesame开源平台 http://code.alibabatech.com/m

基于HTML5的开源图标库-ECharts

ECharts: 来自百度商业前端数据可视化团队,基于html5 Canvas,纯Javascript图表库,底层依赖ZRender,商业产品常用图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算.数据视图.值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘.整合的能力.图表类型支持折线图(区域图).柱状图(条状图).散点图(气泡图).K线图.饼图(环形图).雷达图(填充雷达图).和弦图.力导向布局图.地图,同时支持任意维度的堆积和多图表混合展现. 链接是:h

YxdJSON - Delphi 高性能 JSON 库(支持RTTI和序列化操作)

Delphi 高性能 JSON 库(支持RTTI和序列化操作) 支持平台: Windows, Android, iOS, Mac OS https://github.com/yangyxd/YxdJson

爆料喽!!!开源日志库Logger的使用秘籍

导读 日志对于开发来说是非常重要的,不管是调试数据查看.bug问题追踪定位.数据信息收集统计,日常工作运行维护等等,都大量的使用到.今天介绍著名开源日志库Logger的使用,库的地址:https://github.com/orhanobut/logger 在Android Studio中的gradle中加入,就可以引用依赖logger库: dependencies { compile 'com.orhanobut:logger:1.15' } Logger库能提供的功能: 线程的信息 类的信息

【转】Unity上同时兼容Android和IOS的JSON库

转自卡神博客Unity上同时兼容Android和IOS的JSON库 虽然说JSON解析很常见,而且也经常看见大家讨论怎么解析.但是还是很多人经常出现各种问题.这篇文章就一次性帮你解决JSON解析的问题. 本篇文章使用JSON解析在真实项目中使用,同时兼容PC.android和IOS.没啥好说,一个C#写的解析JSON的工具类,在unity中能正常解析. 不太好用的JSON解析库:LitJson在IOS上不稳定,有时正常,有时不正常..MiniJson据说支持不完整,没测试. 本文给出的JSON解