[ServiceStack.Text] .Netシーケンス化、逆シーケンス化コンポーネント(最も速く、JSON、XML、JSVフォーマットをサポートすると称される)
6928 ワード
ホームページ:
https://github.com/ServiceStack/ServiceStack.Text
The Home of .NET's fastest JSON , JSV and CSV Text Serializers.
ServiceStack.Text is an independent, dependency-free serialization library that contains all of ServiceStack's text processing functionality, including: JsonSerializer TypeSerializer (JSV-Format) CsvSerializer T.Dump extension method StringExtensions - Xml/Json/Csv/Url encoding, BaseConvert, Rot13, Hex escape, etc. Stream, Reflection, List, DateTime, etc extensions and utils
Supports custom builds for: .NET 3.5+, Mono, MonoTouch/MonoDroid, Silverlight 4/5, XBOX, Windows Phone 7
All in a single 144kb dependency-free ServiceStack.Text.dll
実験コード:
packages.config
PS:もう一つ良いライブラリ:
http://json.codeplex.com/
https://github.com/ServiceStack/ServiceStack.Text
The Home of .NET's fastest JSON , JSV and CSV Text Serializers.
ServiceStack.Text is an independent, dependency-free serialization library that contains all of ServiceStack's text processing functionality, including:
Supports custom builds for: .NET 3.5+, Mono, MonoTouch/MonoDroid, Silverlight 4/5, XBOX, Windows Phone 7
All in a single 144kb dependency-free ServiceStack.Text.dll
実験コード:
//filename: User.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleTestApp.ServiceStack.Redis.domain
{
public class User
{
public int Num { get; set; }
public string Name { get; set; }
public decimal Weight { get; set; }
public DateTime Birthday { get; set; }
public override string ToString()
{
return string.Format("HashCode:{0},Num:{1},Name:{2},Weight:{3},Birthday:{4}",
this.GetHashCode(), Num, Name, Weight, Birthday);
}
}
}
//filename: Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleTestApp.ServiceStack.Redis.domain;
using ServiceStack.Text;
namespace ConsoleTestApp.ServiceStack.Redis
{
class Program
{
static void Main(string[] args)
{
User u = new User();
u.Num = 110;
u.Name = " ";
u.Weight = 58.3m;
u.Birthday = DateTime.Parse("1977-01-29 02:03:04.567");
Console.WriteLine("############ JSON ##################");
string uJson = u.ToJson();
Console.WriteLine("u.ToJson():" + uJson);
Console.WriteLine("JsonSerializer:" + JsonSerializer.SerializeToString(u)); //
User uDeJson = uJson.FromJson<User>();
Console.WriteLine("JSON :" + uDeJson.ToString());
Console.WriteLine("############## XML ################");
string uXml = u.ToXml();
Console.WriteLine("u.ToXml():" + uXml);
Console.WriteLine("XmlSerializer:" + XmlSerializer.SerializeToString(u)); //
User uDeXml = uXml.FromXml<User>();
Console.WriteLine("XML :" + uDeXml.ToString());
/*
* JSV Format (i.e. JSON-like Separated Values) is a JSON inspired format that
* uses CSV-style escaping for the least overhead and optimal performance.
*
* Fastest and most compact text-serializer for .NET (5.3x quicker than JSON, 2.6x smaller than XML)
* from:http://www.servicestack.net/mythz_blog/?p=176
*/
Console.WriteLine("############## JSV ################");
string uJsv = u.ToJsv();
Console.WriteLine("u.ToJsv():" + uJsv);
Console.WriteLine("TypeSerializer:" + TypeSerializer.SerializeToString<User>(u));
User uDeJsv = uJsv.FromJsv<User>();
Console.WriteLine("Jsv :" + uDeJsv.ToString());
Console.WriteLine("############## CSV ################");
string uCsv = u.ToCsv();
Console.WriteLine("u.ToCsv():" + uCsv);
//User uDeCsvl = uCsv.();
//Console.WriteLine("CSV :" + uDeCsvl.ToString());
Console.WriteLine("
############ TypeSerializer ##################");
string uTypeString = TypeSerializer.SerializeToString<User>(u);
Console.WriteLine("TypeSerializer.SerializeToString():" + uTypeString);
User uDe = TypeSerializer.DeserializeFromString<User>(uTypeString);
Console.WriteLine(" :" + u.ToString());
Console.WriteLine(" :" + uDe.ToString());
Console.WriteLine(" :" + u.Equals(uDe));
Console.ReadKey();
}
}
}
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ServiceStack.Common" version="3.9.43" targetFramework="net40-Client" />
<package id="ServiceStack.Redis" version="3.9.43" targetFramework="net40-Client" />
<package id="ServiceStack.Text" version="3.9.43" targetFramework="net40-Client" />
</packages>
PS:もう一つ良いライブラリ:
http://json.codeplex.com/