您好,登錄后才能下訂單哦!
這篇文章主要介紹了Jil、json序列化和反序列化庫的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Jil很牛,比Newtonsoft.Json要快很多,且支持客戶端,此處只貼代碼:
using Jil; using System.Runtime.Serialization; [Serializable] class Employee { //[JilDirective(Name = "cid")] public int Id { get; set; } [IgnoreDataMember] public string Name { get; set; } [DataMember(Name = "kkl")] public string Address { get; set; } public Employee() { } //必須要有一個午餐的構造函數 public Employee(int EmployeeId, string Name) { this.Id = EmployeeId; this.Name = Name; } }var jsonString = string.Empty; using (var output = new StringWriter()) { JSON.Serialize(new Employee(666, "zhangsan"), output); Console.WriteLine(output); jsonString = output.ToString(); } using (var input = new StringReader(jsonString)) { //var result = JSON.DeserializeDynamic(jsonString); //var result = JSON.Deserialize<Employee>(jsonString); var result = JSON.Deserialize<Employee>(input); Console.WriteLine("id:{0},name:{1}", result.Id, result.Name); }
需要注意的是,反序列化的強類型對象必須要有無參的構造函數或者只有一個參數的構造函數。
Such a type should have one declared field or property, and default or single parameter constructor.
對于時間處理,默認是ISO8601方式,可通過配置修改:
Options _jilOptions = new Options( dateFormat: DateTimeFormat.MillisecondsSinceUnixEpoch, includeInherited: true, serializationNameFormat: SerializationNameFormat.CamelCase ); var output = JSON.Serialize(new { UserName = "jon", TradingPassword = "123456", ClientIp = "192.168.3.1", Origin = 1, time = DateTime.Now }, _jilOptions); Console.WriteLine(output); Console.WriteLine("----------------"); var pt = "1459481266695"; //時間戳 DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); //說明下,時間格式為13位后面補加4個"0",如果時間格式為10位則后面補加7個"0" long lTime = long.Parse(pt + (pt.Length == 13 ? "0000" : "0000000")); var dtResult = dtStart.Add(new TimeSpan(lTime)); //得到轉換后的時間 Console.WriteLine(dtResult); Console.WriteLine("----------------"); var _time = DateTime.Now.Ticks; Console.WriteLine(DateTime.Now.ToString()); Console.WriteLine("當前時間轉換后模式:---------------->"); var dt = DateTime.FromBinary(_time); //635951023596206937【注意,此處與】 Console.WriteLine(dt.ToLongDateString()); //2016年4月1日 Console.WriteLine(dt.ToLongTimeString()); //10:12:39 Console.WriteLine(dt.ToShortDateString()); //2016/4/1 Console.WriteLine(dt.ToShortTimeString()); //10:12 Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss")); //2016-04-01 10:12:39
輸入如下:
關于客戶端時間戳的js處理,可參閱此文:js時間戳和c#時間戳互轉方法(推薦)
var date = new Date(1459481266695); Y = date.getFullYear() + '-'; M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; D = date.getDate() + ' '; h = date.getHours() + ':'; m = date.getMinutes() + ':'; s = date.getSeconds(); console.log(Y+M+D+h+m+s); VM307:9 2016-04-1 11:27:46
js客戶端獲取時間戳:
var dt= new Date().getTime();
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Jil、json序列化和反序列化庫的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。