.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();
与以下这几个.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 类实现数据的转换
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
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的使用方法的更多相关文章
- [C#技术] .NET平台开源JSON库LitJSON的使用方法
一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemi ...
- (转).NET平台开源JSON库LitJSON的使用方法
一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemi ...
- .NET平台开源JSON序列化
转载: http://blog.csdn.net/ddgweb/article/details/39643747 一个简单示例: String str = "{’name’:’cyf’,’i ...
- 开源 JSON 库解析性能对比( Jackson / Json.simple / Gson )
Json 已成为当前服务器与 web 应用之间数据传输的公认标准. 微服务及分布式架构经常会使用 Json 来传输此类文件,因为这已经是 webAPI 的事实标准. 不过正如许多我们习以为常的事情一样 ...
- 教程-delphi的开源json库:superobject,用法简介
困惑一天的问题 一个语句搞定了... 回头细说. superobject中的{$DEFINE UNICODE} 就是它,这是json官方推荐的Delphi处理json的包,地址: http://www ...
- fastjson是阿里巴巴的开源JSON解析库
fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}&q ...
- 高性能JSON库---FastJson(阿里巴巴)
1.FastJSON简单介绍 Fastjson是一个Java语言编写的高性能功能完好的JSON库. 它採用一种"假定有序高速匹配"的算法,把JSON Parse的性能提升到极致,是 ...
- SNF快速开发平台MVC-EasyUI3.9之-WebApi和MVC-controller层接收的json字符串的取值方法和调用后台服务方法
最近项目组很多人问我,从前台页面传到后台controller控制层或者WebApi 时如何取值和运算操作. 今天就都大家一个在框架内一个取值技巧 前台JS调用代码: 1.下面是选中一行数据后右键点击时 ...
- 28 个 C/C++ 开源 JSON 程序库性能及标准符合程度评测
28 个 C/C++ 开源 JSON 程序库性能及标准符合程度评测 坊间有非常多的 C/C++ JSON 库,怎么选择是一个难题. [nativejson-benchmark](https://git ...
随机推荐
- iOS 块的简单理解
占位 自己主动转载器那小子,你转完了没? 转完了,我开写了哈! Block,就两个事儿,一个是引用,一个是实例,除了实现处.其他地方都是引用. 以此思路.再继续看看引用和实现的定义方式吧. 參考官方文 ...
- Leetcode:remove_element
一. 题目 给定一个数组和一个值.删除当中和给定值相等的元素.返回得到的新数组长度 二. 分析 刚開始我以为仅仅须要返回最后的数组长度即可了呢! 后来WA了一次才知道还得把心数组构造好 ...
- 6.26的二分(久违的AC)
/* codevs 2765 很明显的二分 半年不写代码 超丑 怎么能忍, */ #include<cstdio> #include<algorithm> #define ma ...
- luogu1447 能量采集
题目大意 给出m,n,对于每一个整数x∈[1,m],y∈[1,n]都有一点(x,y).处理每个点所需要的能量为2*k+1,k为该点到原点经过的点的数量(不包括该点本身).求处理所有点所需要的能量和. ...
- hdoj--1083--Courses(最大匹配)
Courses Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- Hadoop MapReduce编程 API入门系列之FOF(Fund of Fund)(二十三)
不多说,直接上代码. 代码 package zhouls.bigdata.myMapReduce.friend; import org.apache.hadoop.io.Text; public cl ...
- 用 JS + LeanCloud 给网页添加数据库(留言功能)
记录给自己网页添加留言功能的过程. 使用工具:LeanCloud,一个自带数据库和增删改查(CRUD)功能的后台系统. 1 在JS中引入LeanCloud官方库 在LeanCloud注册并添加应用的步 ...
- javascript 公历与农历相互转换工具类
/** * 公历[1900-1-31,2100-12-31]时间区间内的公历.农历互转 * @charset UTF-8 * @Author Jea杨(JJonline@JJonline.Cn) * ...
- Android学习——Button填充颜色及实现圆角
在drawable下新建文件夹bt_shape.xml,如下: <?xml version="1.0" encoding="utf-8"?> < ...
- android黑科技系列——手机端破解神器MT的内购VIP功能破解教程
一.前言 在破解app的时候,我们现在几乎都是在PC端进行操作,但是之前bin神的MT管理器,可以在手机端直接破解,不过也有很大的局限性,但是对于一些简单的app破解没问题的.这个工具其实原理也很简单 ...