zoukankan      html  css  js  c++  java
  • [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/

  • 相关阅读:
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getDataSource' defined in class path resource nested exception is org.springframework.beans.factory.BeanCreat异常
    Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating Caused by: tk.mybatis.mapper.MapperException: 无法获取 cn.itcast.mapper.UserMapper.existsWithPrimaryKey 方法的泛型信息!
    fibnacci数列递归实现
    XOR加密
    Pep8课下作业
    求最大公约数伪代码
    《信息安全专业导论》第五周学习总结
    20191306《信息安全专业导论》第四周学习总结
    用或非门实现其他逻辑门
    寻找黑客偶像
  • 原文地址:https://www.cnblogs.com/wucg/p/3034309.html
Copyright © 2011-2022 走看看