• [ServiceStack.Text] .net序列化,反序列化组件(号称最快,支持 JSON,XML,JSV格式)


    主页:

    https://github.com/ServiceStack/ServiceStack.Text

    The Home of .NET's fastest JSONJSV 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("\n\n############ 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/

  • 相关阅读:
    Golang 用go-sql-driver 调用MySQL存储过程时的问题排查
    mysqlbinlog 查看binlog时报错unknown variable 'default-character-set=utf8'
    HBase Go客户端Row构造注意事项
    MySQL JOIN操作报错问题小解
    MySQL主从同步的一个小问题解决
    PHP 多个mysql连接的问题
    记一起动态库加载错误问题排查过程
    DNS缓存
    C输出大于127的ACSII字符
    Mint17 一些安装备忘
  • 原文地址:https://www.cnblogs.com/wucg/p/3034309.html
Copyright © 2020-2023  润新知