{"id":1948,"date":"2017-01-02T22:58:26","date_gmt":"2017-01-02T22:58:26","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1948"},"modified":"2025-10-09T07:27:09","modified_gmt":"2025-10-09T14:27:09","slug":"using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/","title":{"rendered":"Couchbase .NET SDK\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc9c0\uc815 JSON \uc9c1\ub82c\ud654\ub97c \uc704\ud574 Jil \uc0ac\uc6a9"},"content":{"rendered":"<p>Couchbase .NET SDK 2.1.0\uc5d0 \ub3c4\uc785\ub41c \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \uc911 \ud558\ub098\ub294 \uae30\ubcf8 \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\uc790 \uc815\uc758 \uc9c1\ub82c\ud654\uae30\ub85c \uc7ac\uc815\uc758\ud558\uace0 ITypeSerializer \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud655\uc7a5\ud558\uc5ec \uc790\uc2e0\ub9cc\uc758 \ub610\ub294 \uc120\ud638\ud558\ub294 \uc9c1\ub82c\ud654\uae30\ub97c \uc81c\uacf5\ud558\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. \uc774 \ubb38\uc11c\uc5d0\uc11c\ub294 \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\uc8fc\uace0 \uc608\uc81c( <a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-net-contrib\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4-\ub137-\uae30\uace0<\/a> \ud504\ub85c\uc81d\ud2b8\uc758 <a href=\"https:\/\/github.com\/couchbaselabs\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubc14\uc2a4\ub7a9<\/a>)\ub77c\ub294 \ub9e4\uc6b0 \ube60\ub978 JSON \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uae30\ubcf8\uc801\uc73c\ub85c .NET SDK\ub294 \uae30\ub2a5\uc774 \uc644\ubcbd\ud558\uace0 \ub110\ub9ac \uc0ac\uc6a9\ub418\uba70 \uc798 \uc9c0\uc6d0\ub418\ub294 \ud504\ub85c\uc81d\ud2b8\uc774\uae30 \ub54c\ubb38\uc5d0 \uc8fc\ub85c \uc778\uae30 \uc788\ub294 NewtonSoft.NET JSON \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ub274\ud134\uc18c\ud504\ud2b8\uac00 \uc81c\uacf5\ud558\ub294 \uc131\ub2a5\uc740 \ub300\ubd80\ubd84\uc758 \ud504\ub85c\uc81d\ud2b8\uc5d0 \ucda9\ubd84\ud558\uc9c0\ub9cc, \uacbd\uc6b0\uc5d0 \ub530\ub77c\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub354 \ube60\ub978 JSON \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\ud558\uace0 \uc2f6\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/kevin-montrose\/Jil\" target=\"_blank\" rel=\"noopener\">Jil<\/a>.<\/p>\n<p>Jil\uc740 \uc7a5\uc560\uac00 \uc5c6\ub294 \ube60\ub978 IL \uc0dd\uc131 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc778 Sigil\uc744 \uae30\ubc18\uc73c\ub85c \ud558\uba70, \uace0\ub3c4\ub85c \ucd5c\uc801\ud654\ub41c \ubc94\uc6a9 JSON \uc9c1\ub82c\ud654\uae30\ub97c \uc81c\uacf5\ud558\uba70, \uc131\ub2a5 \ud5a5\uc0c1\uc744 \uc704\ud574 \uc5ec\ub7ec \uac00\uc9c0 '\ud2b8\ub9ad'\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud560\ub2f9(\ub530\ub77c\uc11c GC\uac00 \ud544\uc694 \uc5c6\uc74c)\uc744 \ud53c\ud558\uace0 \uba64\ubc84 \uc561\uc138\uc2a4 \uc21c\uc11c\ub97c \ucd5c\uc801\ud654\ud558\uc5ec CPU\uac00 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uac12\uc744 \uae30\ub2e4\ub9ac\ub294 \ub3d9\uc548 \uba48\ucd9c \ud544\uc694\uac00 \uc5c6\ub3c4\ub85d \ud558\ub294 \ub4f1 \uc5ec\ub7ec \uac00\uc9c0 '\ud2b8\ub9ad'\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc9c8\uacfc \uc2dc\uae38\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694. <a href=\"https:\/\/github.com\/kevin-montrose\/Jil\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30 <\/a>\uadf8\ub9ac\uace0 <a href=\"https:\/\/github.com\/kevin-montrose\/Sigil\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30<\/a>.<\/p>\n<h2>\ud544\uc694\ud55c \ub2e8\uacc4<\/h2>\n<p>\uae30\ubcf8 \uc9c1\ub82c\ud654\uae30\ub97c \ud655\uc7a5\ud558\ub294 \uac83\uc740 \ube44\uad50\uc801 \uc27d\uc2b5\ub2c8\ub2e4:<\/p>\n<ol>\n<li>\uba3c\uc800 Couchbase.Core.Serializaton.ITypeSerializer\uc758 \uc790\uccb4 \uad6c\ud604\uc744 \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<li>\uadf8\ub7f0 \ub2e4\uc74c Couchbase.Configuration.Client.ClientConfiguration \ud074\ub798\uc2a4\uc5d0\uc11c DefaultSerializer\ub97c \uc7ac\uc815\uc758\ud569\ub2c8\ub2e4. \uadf8\uac8c \ub2e4\uc785\ub2c8\ub2e4!<\/li>\n<li>\uc120\ud0dd\uc801\uc73c\ub85c Web.Config \ub610\ub294 App.Config\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0c8 ITypeSerializer\ub97c \ub4f1\ub85d\ud558\uc5ec SerializerFactory\uac00 \ub7f0\ud0c0\uc784\uc5d0 \uc9c1\ub82c\ud654\uae30\ub97c \uc0dd\uc131\ud558\ub3c4\ub85d \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ol>\n<h2>ITypeSerializer \uad6c\ud604\ud558\uae30<\/h2>\n<p>ITypeSerializer \uc778\ud130\ud398\uc774\uc2a4\ub294 \uba64\uce90\uc2dc\ub4dc \ud328\ud0b7 \ubcf8\ubb38\uc758 \uc9c1\ub82c\ud654 \ubc0f \uc5ed\uc9c1\ub82c\ud654\ub97c \ucc98\ub9ac\ud558\uae30 \uc704\ud574 \ud2b8\ub79c\uc2a4\ucf54\ub354(ITypeTranscoder)\uc5d0\uc11c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ud2b8\ub79c\uc2a4\ucf54\ub354\ub294 \uc5f0\uc0b0 \uc77c\ubc18 \ud30c\ub77c\ubbf8\ud130\uc758 Type, \uc5f0\uc0b0\uc758 OperationCode, Memcached \ud5e4\ub354 \ub0b4\uc5d0 \uc778\ucf54\ub529\ub41c \"\ud50c\ub798\uadf8\"\ub97c \uc0ac\uc6a9\ud574 \ubcf8\ubb38\uc744 \uc9c1\ub82c\ud654 \ud574\uc81c\ud560 Type\uc744 \uacb0\uc815\ud558\uace0 \uc9c1\ub82c\ud654 \uc911\uc5d0 \ud328\ud0b7\uc744 \uc778\ucf54\ub529\ud560 \ud50c\ub798\uadf8\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4.<\/p>\n<p>\ubcf8\ubb38 \uc720\ud615\uc774 \uac1d\uccb4 \ub610\ub294 \ud504\ub9ac\ubbf8\ud2f0\ube0c(int, ulong \ub4f1)\uc778 \uacbd\uc6b0 \ubcf8\ubb38\uc740 JSON \ud50c\ub798\uadf8\ub85c \uc778\ucf54\ub529\ub418\uc5b4 JSON\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4. \uc608, \uc815\uc218\ub294 \uc720\ud6a8\ud55c JSON\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4! \ubcf8\ubb38 \uc720\ud615\uc774 \ubb38\uc790\uc5f4\uc778 \uacbd\uc6b0 \ubb38\uc790\uc5f4\ub85c \ucde8\uae09\ub418\uc5b4 UTF 8\ub85c \uc778\ucf54\ub529 \ub610\ub294 \ub514\ucf54\ub529\ub429\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ubc14\uc774\ud2b8 \ubc30\uc5f4\uc740 \ubc14\ub85c \uc804\ub2ec\ub418\uc5b4 \ud328\ud0b7\uc5d0 \ucd94\uac00\ub418\uac70\ub098 \ud328\ud0b7\uc5d0\uc11c \uc77d\ud600\uc9c0\uace0, \uc5f0\uc0b0\uc5d0 \ubcf8\ubb38\uc774 \uc788\ub294 \uacbd\uc6b0 IOperationResult\uc758 Value \ud544\ub4dc\uc5d0 \ud560\ub2f9\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \ubb38\uc790\uc5f4\uacfc \ubc14\uc774\ud2b8 \ubc30\uc5f4 \uc774\uc678\uc758 \ubaa8\ub4e0 \uac12\uc740 ITypeSerializer\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc9c1\ub82c\ud654 \ub610\ub294 \uc5ed\uc9c1\ub82c\ud654\ub429\ub2c8\ub2e4.<\/p>\n<p>ITypeSerializer\uc5d0\ub294 \uad6c\ud604\ud574\uc57c \ud558\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc11c\ub4dc \uc11c\uba85\uc774 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">\r\n\r\npublic interface ITypeSerializer\r\n    {\r\n        T Deserialize(byte[] buffer, int offset, int length);\r\n\r\n        T Deserialize(Stream stream);\r\n\r\n        byte[] Serialize(object obj);\r\n    }\r\n\r\n <\/code><\/pre>\n<p>\uc5ed\uc9c1\ub82c\ud654\uc5d0 \ub300\ud55c \ud558\ub098\uc758 \uc624\ubc84\ub85c\ub4dc\ub294 \uc2a4\ud2b8\ub9bc\uacfc \ubc14\uc774\ud2b8 \ubc30\uc5f4, \uc624\ud504\uc14b \ubc0f \uae38\uc774\ub97c \ubc1b\uc2b5\ub2c8\ub2e4. Serialize\ub294 \uc804\uc1a1\uc744 \uc704\ud574 \ubc14\uc774\ud2b8 \ubc30\uc5f4\ub85c \uc9c1\ub82c\ud654\ud560 \uac12\uc778 System.Object \ucc38\uc870\ub9cc \ubc1b\uc2b5\ub2c8\ub2e4.<\/p>\n<p>JilSerializer\uc758 \ucf54\ub4dc \ubaa9\ub85d\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code> \r\n\r\n    public class JilSerializer : ITypeSerializer\r\n    {\r\n        ...\r\n\r\n        public T Deserialize(Stream stream)\r\n        {\r\n            using (var reader = new StreamReader(stream))\r\n            {\r\n               return JSON.Deserialize(reader, _options);\r\n            }\r\n        }\r\n\r\n        public T Deserialize(byte[] buffer, int offset, int length)\r\n        {\r\n            T value = default (T);\r\n            if (length == 0) return value;\r\n            using (var ms = new MemoryStream(buffer, offset, length))\r\n            {\r\n                using (var sr = new StreamReader(ms))\r\n                {\r\n                    if (typeof(T).IsValueType &amp;&amp; (!typeof(T).IsGenericType\r\n                        || typeof(T).GetGenericTypeDefinition() != typeof(Nullable&lt;&gt;)))\r\n                    {\r\n                        var type = typeof (Nullable&lt;&gt;).MakeGenericType(typeof (T));\r\n                        object nullableVal = JSON.Deserialize(sr, type, _options);\r\n                        value = nullableVal == null ? default(T) : (T)nullableVal;\r\n                    }\r\n                    else\r\n                    {\r\n                        value = JSON.Deserialize(sr, _options);\r\n                    }\r\n                }\r\n            }\r\n            return value;\r\n        }\r\n\r\n        public byte[] Serialize(object obj)\r\n        {\r\n            using (var ms = new MemoryStream())\r\n            {\r\n                using (var sw = new StreamWriter(ms))\r\n                {\r\n                    JSON.Serialize(obj, sw, _options);\r\n                }\r\n                return ms.ToArray();\r\n            }\r\n        }\r\n    }\r\n<\/code><\/pre>\n<p>\uc9c1\ub82c\ud654 \uba54\ucee4\ub2c8\uc998\uc740 \ub2e4\ub974\uc9c0\ub9cc \uaddc\uce59\uc740 \ub3d9\uc77c\ud569\ub2c8\ub2e4. \uc774 \ucf54\ub4dc\ub294 Newtonsoft.NET \uc9c1\ub82c\ud654 \ud074\ub798\uc2a4 \ub300\uc2e0 Jil JSON \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc810\uc744 \uc81c\uc678\ud558\uba74 DefaultSerializer \ub85c\uc9c1\uacfc \uac70\uc758 \ub3d9\uc77c\ud558\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694.<\/p>\n<h2>\uc0ac\uc6a9\uc790 \uc815\uc758 \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d SDK \uad6c\uc131\ud558\uae30<\/h2>\n<p>\uc55e\uc11c \uc5b8\uae09\ud588\ub4ef\uc774 2.1.0\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc815\uc758 \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d Couchbase .NET SDK\uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc73c\uba70, \uc774\ub294 ClientConfiguration\uc5d0\uc11c \uae30\ubcf8 \uc9c1\ub82c\ud654\uae30 \ud329\ud1a0\ub9ac\ub97c \uc7ac\uc815\uc758\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c \uc218\ud589\ub418\uba70, \uc774\ub294 \ub2e8\uc9c0 Func \uc18d\uc131\uc778 \uc11c\uba85\uacfc \uc77c\uce58\ud558\ub294 \ubaa8\ub4e0 \uac83\uc774 \uc0dd\uc131\ub418\uc5b4 \uc9c1\ub82c\ud654\uc5d0 \uc0ac\uc6a9\ub420 \uac83\uc785\ub2c8\ub2e4. \ucc38\uace0\ub85c, \uc9c1\ub82c\ud654 \uc124\uc815\uacfc \uc5ed\uc9c1\ub82c\ud654 \uc124\uc815\uc740 \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc73c\uba70 \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uadf8 \uc608\uc785\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">\r\n\r\nvar config = new ClientConfiguration\r\n{\r\n    Serializer = () =&gt; new JilSerializer()\r\n};\r\n \r\nvar cluster = new Cluster(config);\r\nvar bucket = cluster.OpenBucket();\r\n\r\n<\/code><\/pre>\n<p>ITypeSerializer \uc0dd\uc131\uc744 \uc704\ud574 \ubcf5\uc7a1\ud55c \ub85c\uc9c1\uc744 \uc81c\uacf5\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uac00\uc7a5 \uac04\ub2e8\ud55c \uc811\uadfc \ubc29\uc2dd\uc73c\ub85c\ub3c4 \ucda9\ubd84\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc9c1\ub82c\ud654 \ud329\ud1a0\ub9ac\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc9c1\ub82c\ud654\uae30\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud558\ub824\uba74 Web.Config \ub610\ub294 App.Config\uc5d0 \ucd08\uae30\ud654 \ucf54\ub4dc\ub97c \uc81c\uacf5\ud558\uba74 \ub429\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-xml\"><!--?xml version=\"1.0\" encoding=\"utf-8\" ?--><\/code><\/pre>\n<p>\ucf54\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uad6c\uc131\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \uad6c\uc131\uacfc \uc77c\uce58\ud558\ub294 \ubb38\uc790\uc5f4 \uacbd\ub85c\ub97c \ucde8\ud558\ub294 Cluster \ud074\ub798\uc2a4\uc758 CTOR\ub97c \ud638\ucd9c\ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">\r\nvar cluster = new Cluster(\"couchbaseClients\/couchbase\");\r\nvar bucket = cluster.OpenBucket();\r\n<\/code><\/pre>\n<p>\uc774\ub807\uac8c \ud558\uba74 \ud074\ub7ec\uc2a4\ud130 \uac1c\uccb4\uc5d0\uc11c \uc5f4\ub9b0 \ubaa8\ub4e0 \ubc84\ud0b7\uc740 \uae30\ubcf8 NewtonSoft.NET \uc9c1\ub82c\ud654\uae30 \ub300\uc2e0 JilSerializer\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>Couchbase .NET SDK\uc5d0 \uc0c8\ub85c\uc6b4 \ud655\uc7a5 \ud3ec\uc778\ud2b8\uac00 \ucd94\uac00\ub418\uc5c8\uc73c\ubbc0\ub85c ITypeSerializer \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9\uc790 \uc815\uc758 JSON \uc9c1\ub82c\ud654\uae30\ub97c \uc791\uc131\ud558\uace0 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uac04\ub2e8\ud574\uc84c\uc2b5\ub2c8\ub2e4. Jil JSON \uc9c1\ub82c\ud654\uae30\ub294 \uc778\uc0c1\uc801\uc774\uace0 \uc0ac\uc6a9\ud558\uae30 \uc26c\uc6cc \ubcf4\uc785\ub2c8\ub2e4. \ucee4\ubba4\ub2c8\ud2f0 \uba64\ubc84\uac00 ServiceStack.Text\uc6a9 \uc9c1\ub82c\ud654\uae30\ub97c \ub9cc\ub4e4\uc5b4\uc11c Couchbase. NET \uae30\uc5ec \ud504\ub85c\uc81d\ud2b8\uc5d0 \uae30\uc5ec\ud574 \uc8fc\uc168\uc73c\uba74 \ud569\ub2c8\ub2e4!<\/p>","protected":false},"excerpt":{"rendered":"<p>One of the new features introduced in 2.1.0 of the Couchbase .NET SDK was support for overriding the default serializer with your own custom serializer by extending the ITypeSerializer interface and providing your own or favorite serializer. In this article [&hellip;]<\/p>","protected":false},"author":21,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10127,2201],"tags":[1261,1430],"ppma_author":[8970],"class_list":["post-1948","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-c-sharp","category-tools-sdks","tag-json","tag-serialization"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Jil for custom JSON Serialization in the Couchbase .NET SDK<\/title>\n<meta name=\"description\" content=\"How to override the default serializer with own custom JSON serializer Jil by extending the ITypeSerializer interface and providing own serializer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Jil for custom JSON Serialization in the Couchbase .NET SDK\" \/>\n<meta property=\"og:description\" content=\"How to override the default serializer with own custom JSON serializer Jil by extending the ITypeSerializer interface and providing own serializer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-02T22:58:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:27:09+00:00\" \/>\n<meta name=\"author\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jeffrysmorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Using Jil for custom JSON Serialization in the Couchbase .NET SDK\",\"datePublished\":\"2017-01-02T22:58:26+00:00\",\"dateModified\":\"2025-10-09T14:27:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/\"},\"wordCount\":750,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"JSON\",\"serialization\"],\"articleSection\":[\".NET\",\"C#\",\"Tools &amp; SDKs\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/\",\"name\":\"Jil for custom JSON Serialization in the Couchbase .NET SDK\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-02T22:58:26+00:00\",\"dateModified\":\"2025-10-09T14:27:09+00:00\",\"description\":\"How to override the default serializer with own custom JSON serializer Jil by extending the ITypeSerializer interface and providing own serializer.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Jil for custom JSON Serialization in the Couchbase .NET SDK\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\",\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, Senior Software Engineer, Couchbase\"},\"description\":\"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).\",\"sameAs\":[\"https:\/\/x.com\/jeffrysmorris\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/jeff-morris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Jil for custom JSON Serialization in the Couchbase .NET SDK","description":"\uae30\ubcf8 \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\uc790 \uc815\uc758 JSON \uc9c1\ub82c\ud654\uae30 Jil\ub85c \uc7ac\uc815\uc758\ud558\ub294 \ubc29\ubc95 ITypeSerializer \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud655\uc7a5\ud558\uace0 \uc790\uccb4 \uc9c1\ub82c\ud654\uae30\ub97c \uc81c\uacf5\ud558\uc5ec \uae30\ubcf8 \uc9c1\ub82c\ud654\uae30\ub97c \uc7ac\uc815\uc758\ud569\ub2c8\ub2e4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/","og_locale":"ko_KR","og_type":"article","og_title":"Using Jil for custom JSON Serialization in the Couchbase .NET SDK","og_description":"How to override the default serializer with own custom JSON serializer Jil by extending the ITypeSerializer interface and providing own serializer.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-02T22:58:26+00:00","article_modified_time":"2025-10-09T14:27:09+00:00","author":"Jeff Morris, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@jeffrysmorris","twitter_misc":{"Written by":"Jeff Morris, Senior Software Engineer, Couchbase","Est. reading time":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Using Jil for custom JSON Serialization in the Couchbase .NET SDK","datePublished":"2017-01-02T22:58:26+00:00","dateModified":"2025-10-09T14:27:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/"},"wordCount":750,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["JSON","serialization"],"articleSection":[".NET","C#","Tools &amp; SDKs"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/","url":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/","name":"Jil for custom JSON Serialization in the Couchbase .NET SDK","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-02T22:58:26+00:00","dateModified":"2025-10-09T14:27:09+00:00","description":"\uae30\ubcf8 \uc9c1\ub82c\ud654\uae30\ub97c \uc0ac\uc6a9\uc790 \uc815\uc758 JSON \uc9c1\ub82c\ud654\uae30 Jil\ub85c \uc7ac\uc815\uc758\ud558\ub294 \ubc29\ubc95 ITypeSerializer \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud655\uc7a5\ud558\uace0 \uc790\uccb4 \uc9c1\ub82c\ud654\uae30\ub97c \uc81c\uacf5\ud558\uc5ec \uae30\ubcf8 \uc9c1\ub82c\ud654\uae30\ub97c \uc7ac\uc815\uc758\ud569\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/using-jil-for-custom-json-serialization-in-the-couchbase-net-sdk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Jil for custom JSON Serialization in the Couchbase .NET SDK"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341","name":"Jeff Morris, \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812","url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","caption":"Jeff Morris, Senior Software Engineer, Couchbase"},"description":"Jeff Morris\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Couchbase\uc5d0 \uc785\uc0ac\ud558\uae30 \uc804\uc5d0\ub294 6\ub144 \ub3d9\uc548 Source Interlink\uc5d0\uc11c \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc6f9 \uc544\ud0a4\ud14d\ud2b8\ub85c \uadfc\ubb34\ud588\uc2b5\ub2c8\ub2e4. Jeff\ub294 Couchbase SDK \uac1c\ubc1c\uacfc N1QL(\ucffc\ub9ac \uc5b8\uc5b4)\uacfc \ud1b5\ud569\ud558\ub294 \ubc29\ubc95\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/jeff-morris\/"}]}},"authors":[{"term_id":8970,"user_id":21,"is_guest":0,"slug":"jeff-morris","display_name":"Jeff Morris, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","author_category":"","last_name":"Jeff Morris, Senior Software Engineer, Couchbase","first_name":"Jeff","job_title":"","user_url":"","description":"Jeff Morris\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Couchbase\uc5d0 \uc785\uc0ac\ud558\uae30 \uc804\uc5d0\ub294 6\ub144 \ub3d9\uc548 Source Interlink\uc5d0\uc11c \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc6f9 \uc544\ud0a4\ud14d\ud2b8\ub85c \uadfc\ubb34\ud588\uc2b5\ub2c8\ub2e4. Jeff\ub294 Couchbase SDK \uac1c\ubc1c\uacfc N1QL(\ucffc\ub9ac \uc5b8\uc5b4)\uacfc \ud1b5\ud569\ud558\ub294 \ubc29\ubc95\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1948"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1948\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1948"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}