Below you will find pages that utilize the taxonomy term “Jil”
Posts
Bmbsqd.JilMediaTypeFormatter - Json MediaTypeFormatter based on JIL
如果要將 Web API 的 JSON 處理改用 Jil 替換,我們可以使用 Bmbsqd.JilMediaTypeFormatter 這個 NuGet 套件。
{% img /images/posts/BmbsqdJilMediaTypeFormatter/1.png %}
{% img /images/posts/BmbsqdJilMediaTypeFormatter/2.png %}
套件安裝完後,開啟 WebApiConfig 將 JsonFormatter 換成 JilMediaTypeFormatter。
using Bmbsqd.JilMediaFormatter; ... config.Formatters.Remove(config.Formatters.JsonFormatter); config.Formatters.Add(new JilMediaTypeFormatter()); ... 像是下面這樣:
{% img /images/posts/BmbsqdJilMediaTypeFormatter/3.png %}
這樣 Web API 的 JSON 處理就會換成用 Jil 去做了。
Link NuGet Gallery | JIL MediaTypeFormatter 0.1.1
read morePosts
Jil - Ignore amp; Custom Element Name
使用 Jil 處理 JSON 時,如果要在序列化時忽略處理某特定屬性,可在其屬性加上 IgnoreDataMemberAttribute,像是下面這樣:
using System; using System. Runtime.Serialization ; using Jil; namespace ConsoleApplication10 { class Program { static void Main( string[] args ) { var larry = new Person { Name = "Larry Nung", NickName = "Larry" }; Console.WriteLine (JSON. Serialize(larry )); } public class Person { [ DataMember] public String Name { get; set ; } [ IgnoreDataMember] public String NickName { get; set ; } } } } 或是帶上 JilDirectiveAttribute,指定 Ignore:
read morePosts
Jil - Serialize DateTime to ISO8601 Format
Jil 在做時間的序列化,預設出來的資料會跟 JavaSriptSerializer 一樣,會序列化成下面這個樣子:
"/Date(1290181373164)/" 若要改成 ISO8601 的格式,我們可以帶入 Options 進行指定:
... Console.WriteLine(JSON.Serialize(dt, new Options(dateFormat : DateTimeFormat.ISO8601))); Console.WriteLine(JSON.Serialize(dt, Options.ISO8601)); ... 完整的範例如下:
using Jil; using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { var dt = DateTime.Now; Console.WriteLine(JSON.Serialize(dt)); Console.WriteLine(JSON.Serialize(dt, new Options(dateFormat : DateTimeFormat.ISO8601))); Console.WriteLine(JSON.Serialize(dt, Options.ISO8601)); } } } {% img /images/posts/JilIso8601/1.png %}
read morePosts
Jil - Fast .NET JSON (De)Serializer
Jil 是 JSON 處理的套件,號稱比 JSON.NET 更快,甚至是當前套件中處理起來第二快的,僅次於 Protobuf。
{% img /images/posts/Jil/1.png %}
{% img /images/posts/Jil/2.png %}
{% img /images/posts/Jil/3.png %}
{% img /images/posts/Jil/4.png %}
{% img /images/posts/Jil/5.png %}
{% img /images/posts/Jil/6.png %}
只要加入 NuGet 參考,Using Jil 命名空間即可開始使用。
要序列化時,可將物件帶入 JSON.Serialize 方法,方法會回傳序列化後的 JSON 字串。
... var json = JSON.Serialize(larry); ... 解序列化時,可將 JSON 字串帶入 JSON.Deserialize,並利用範型指定所要解回的物件型態即可。
... larry = JSON.Deserialize<Person>(json); ... 此外,它也支援動態解析的能力,使用上只要將 JSON 字串帶入 JSON.DeserializeDynamic 即會回傳 Dynamic 物件。
... var person = JSON.DeserializeDynamic(json); ... 完整的操作範例如下:
read more