From bb7b7b31e6af79f23c084b1e0ff261648465d176 Mon Sep 17 00:00:00 2001 From: Alihan Livdumlu Date: Fri, 22 Sep 2017 01:58:06 +0200 Subject: [PATCH] feat: create JSON constructor attribute --- Assets/Plugins/UnityJSON/Attributes.cs | 18 ++++++- Assets/Plugins/UnityJSON/Deserializer.cs | 66 ++++++++++++++++++++--- Assets/Plugins/UnityJSON/Interfaces.cs | 14 ++--- Assets/Plugins/UnityJSON/Serializer.cs | 21 ++++---- Assets/Plugins/UnityJSON/Util.cs | 6 +++ README.md | 34 +++++++++++- unityjson.unitypackage | Bin 23552 -> 24073 bytes 7 files changed, 131 insertions(+), 28 deletions(-) diff --git a/Assets/Plugins/UnityJSON/Attributes.cs b/Assets/Plugins/UnityJSON/Attributes.cs index 8add72b..cefc2bc 100644 --- a/Assets/Plugins/UnityJSON/Attributes.cs +++ b/Assets/Plugins/UnityJSON/Attributes.cs @@ -10,7 +10,10 @@ namespace UnityJSON /// attribute, the default options are used. For private fields and /// properties, this attribute is mandatory. /// - [AttributeUsage (AttributeTargets.Field | AttributeTargets.Property)] + [AttributeUsage ( + AttributeTargets.Field | + AttributeTargets.Property | + AttributeTargets.Parameter)] public class JSONNodeAttribute : Attribute { private NodeOptions _options; @@ -320,4 +323,17 @@ public Type referenceType { get { return _reference; } } } + + /// + /// Marks a constructor that is used to deserialize objects. + /// Every class can use this attribute maximum one times. The + /// parameters can have JSONNodeAttributes. + /// + [AttributeUsage (AttributeTargets.Constructor)] + public class JSONConstructorAttribute : Attribute + { + public JSONConstructorAttribute () : base () + { + } + } } diff --git a/Assets/Plugins/UnityJSON/Deserializer.cs b/Assets/Plugins/UnityJSON/Deserializer.cs index 31888af..9ddb1b5 100644 --- a/Assets/Plugins/UnityJSON/Deserializer.cs +++ b/Assets/Plugins/UnityJSON/Deserializer.cs @@ -177,7 +177,7 @@ public Nullable DeserializeToNullable ( if (node == null || node.IsNull) { return null; } - return (Nullable) Deserialize (node, typeof(T), options); + return (Nullable)Deserialize (node, typeof(T), options); } /// @@ -842,11 +842,16 @@ private object _DeserializeCustom (JSONNode node, Type type, NodeOptions options var conditionalAttributes = type.GetCustomAttributes (typeof(ConditionalInstantiationAttribute), false); foreach (object attribute in conditionalAttributes) { var condition = attribute as ConditionalInstantiationAttribute; - if (Equals (node [condition.key].Value, condition.value.ToString())) { + if (Equals (node [condition.key].Value, condition.value.ToString ())) { + JSONNode value = node [condition.key]; if (condition.removeKey) { node.Remove (condition.key); } - return Deserialize (node, condition.referenceType, options); + object result = Deserialize (node, condition.referenceType, options); + if (condition.removeKey) { + node.Add (condition.key, value); + } + return result; } } @@ -855,17 +860,62 @@ private object _DeserializeCustom (JSONNode node, Type type, NodeOptions options return Deserialize (node, defaultAttribute.referenceType, options); } - object obj; - try { - obj = Activator.CreateInstance (type); - } catch (Exception) { - return _HandleUnknown (options, "Unknown type " + type + " cannot be instantiated."); + object obj = null; + KeyValuePair[] removedKeys = null; + ConstructorInfo[] constructors = type.GetConstructors ( + BindingFlags.Instance | + BindingFlags.Public | + BindingFlags.NonPublic); + foreach (ConstructorInfo constructor in constructors) { + var constructorAttribute = Util.GetAttribute (constructor); + if (constructorAttribute != null) { + obj = _CreateObjectWithConstructor (type, constructor, node, out removedKeys); + break; + } + } + + if (obj == null) { + try { + obj = Activator.CreateInstance (type); + } catch (Exception) { + return _HandleUnknown (options, "Unknown type " + type + " cannot be instantiated."); + } } DeserializeOn (obj, node, options); + if (removedKeys != null) { + foreach (var pair in removedKeys) { + node.Add (pair.Key, pair.Value); + } + } return obj; } + private object _CreateObjectWithConstructor ( + Type type, + ConstructorInfo constructor, + JSONNode node, + out KeyValuePair[] removedKeys) + { + ParameterInfo[] parameters = constructor.GetParameters (); + object[] parameterValues = new object[parameters.Length]; + removedKeys = new KeyValuePair[parameterValues.Length]; + + for (int i = 0; i < parameterValues.Length; i++) { + var parameterAttribute = Util.GetAttribute (parameters [i]); + string key = parameterAttribute != null && parameterAttribute.key != null + ? parameterAttribute.key : parameters [i].Name; + parameterValues [i] = Deserialize ( + node [key], + parameters [i].ParameterType, + parameterAttribute == null ? NodeOptions.Default : parameterAttribute.options); + + removedKeys [i] = new KeyValuePair (key, node [key]); + node.Remove (key); + } + return Activator.CreateInstance (type, parameterValues); + } + private void _FeedCustom (object filledObject, JSONNode node, NodeOptions options) { if (filledObject is IDeserializable) { diff --git a/Assets/Plugins/UnityJSON/Interfaces.cs b/Assets/Plugins/UnityJSON/Interfaces.cs index 9c7c9e9..e7f5aae 100644 --- a/Assets/Plugins/UnityJSON/Interfaces.cs +++ b/Assets/Plugins/UnityJSON/Interfaces.cs @@ -40,7 +40,7 @@ public interface IDeserializable /// Feeds the JSON node into the object. You can use the /// helper methods from the deserializer. /// - void Deserialize(JSONNode node, Deserializer deserializer); + void Deserialize (JSONNode node, Deserializer deserializer); } /// @@ -53,19 +53,19 @@ public interface ISerializationListener /// This call will always be followed by either OnSerializationSucceeded /// or OnSerializationFailed but not both. /// - void OnSerializationWillBegin(Serializer serializer); + void OnSerializationWillBegin (Serializer serializer); /// /// Called immediately after a successful completion of this /// object's serialization. /// - void OnSerializationSucceeded(Serializer serializer); + void OnSerializationSucceeded (Serializer serializer); /// /// Called when the serialization of the object fails for any /// reason. This will be called just before throwing the exception. /// - void OnSerializationFailed(Serializer serializer); + void OnSerializationFailed (Serializer serializer); } /// @@ -78,18 +78,18 @@ public interface IDeserializationListener /// This call will always be followed by either OnDeserializationSucceeded /// or OnDeserializationFailed but not both. /// - void OnDeserializationWillBegin(Deserializer deserializer); + void OnDeserializationWillBegin (Deserializer deserializer); /// /// Called immediately after a successful completion of this /// object's deserialization. /// - void OnDeserializationSucceeded(Deserializer deserializer); + void OnDeserializationSucceeded (Deserializer deserializer); /// /// Called when the deserialization of the object fails for any /// reason. This will be called just before throwing the exception. /// - void OnDeserializationFailed(Deserializer deserializer); + void OnDeserializationFailed (Deserializer deserializer); } } diff --git a/Assets/Plugins/UnityJSON/Serializer.cs b/Assets/Plugins/UnityJSON/Serializer.cs index 5a92777..73b4303 100644 --- a/Assets/Plugins/UnityJSON/Serializer.cs +++ b/Assets/Plugins/UnityJSON/Serializer.cs @@ -49,7 +49,7 @@ public static Serializer Simple { /// public bool useUndefinedForNull = false; - private Serializer() + private Serializer () { } @@ -98,7 +98,7 @@ public string Serialize (object obj, NodeOptions options = NodeOptions.Default) Type type = obj.GetType (); if (type.IsValueType) { if (type.IsEnum) { - result = _SerializeEnum ((Enum) obj); + result = _SerializeEnum ((Enum)obj); } else if (type.IsPrimitive) { if (obj is bool) { result = SerializeBool ((bool)obj); @@ -236,7 +236,7 @@ public string SerializeVector3 (Vector3 vector) public string SerializeVector4 (Vector4 vector) { return "{\"x\":" + vector.x + ",\"y\":" + vector.y - + ",\"z\":" + vector.z + ",\"w\":" + vector.w + "}"; + + ",\"z\":" + vector.z + ",\"w\":" + vector.w + "}"; } /// @@ -245,7 +245,7 @@ public string SerializeVector4 (Vector4 vector) public string SerializeQuaternion (Quaternion quaternion) { return "{\"x\":" + quaternion.x + ",\"y\":" + quaternion.y - + ",\"z\":" + quaternion.z + ",\"w\":" + quaternion.w + "}"; + + ",\"z\":" + quaternion.z + ",\"w\":" + quaternion.w + "}"; } /// @@ -254,7 +254,7 @@ public string SerializeQuaternion (Quaternion quaternion) public string SerializeColor (Color color) { return "{\"r\":" + color.r + ",\"g\":" + color.g - + ",\"b\":" + color.b + ",\"a\":" + color.a + "}"; + + ",\"b\":" + color.b + ",\"a\":" + color.a + "}"; } /// @@ -263,7 +263,7 @@ public string SerializeColor (Color color) private string SerializeRect (Rect rect) { return "{\"x\":" + rect.x + ",\"y\":" + rect.y - + ",\"width\":" + rect.width + ",\"height\":" + rect.height + "}"; + + ",\"width\":" + rect.width + ",\"height\":" + rect.height + "}"; } /// @@ -272,7 +272,7 @@ private string SerializeRect (Rect rect) private string SerializeBounds (Bounds bounds) { return "{\"center\":" + SerializeVector3 (bounds.center) - + ",\"extents\":" + SerializeVector3 (bounds.extents) + "}"; + + ",\"extents\":" + SerializeVector3 (bounds.extents) + "}"; } private string _SerializeString (string stringValue) @@ -286,7 +286,7 @@ private string _SerializeEnum (Enum obj) JSONEnumAttribute enumAttribute = Util.GetAttribute (type); if (enumAttribute != null) { if (enumAttribute.useIntegers) { - return (Convert.ToInt32(obj)).ToString (); + return (Convert.ToInt32 (obj)).ToString (); } else { string formatted = _FormatEnumMember (obj.ToString (), enumAttribute.format); if (enumAttribute.prefix != null) { @@ -395,14 +395,15 @@ where isNotExtras (p) && _IsValidPropertyInfo (p) var extras = Util.GetMemberValue (extrasMember, obj) as IEnumerable; if (extras != null) { result += (result == "" ? "" : ",") - + _SerializeEnumarable (extras, extrasAttribute.options); + + _SerializeEnumarable (extras, extrasAttribute.options); } } if (listener != null) { listener.OnSerializationSucceeded (this); } - return "{" + result + "}";; + return "{" + result + "}"; + ; } catch (Exception exception) { if (listener != null) { listener.OnSerializationFailed (this); diff --git a/Assets/Plugins/UnityJSON/Util.cs b/Assets/Plugins/UnityJSON/Util.cs index 30df74e..f388e13 100644 --- a/Assets/Plugins/UnityJSON/Util.cs +++ b/Assets/Plugins/UnityJSON/Util.cs @@ -13,6 +13,12 @@ internal static T GetAttribute (MemberInfo info) where T : Attribute return (attributes == null || attributes.Length == 0) ? null : attributes [0] as T; } + internal static T GetAttribute (ParameterInfo info) where T : Attribute + { + object[] attributes = info.GetCustomAttributes (typeof(T), true); + return (attributes == null || attributes.Length == 0) ? null : attributes [0] as T; + } + internal static Type GetMemberType (MemberInfo memberInfo) { return memberInfo is FieldInfo ? diff --git a/README.md b/README.md index 5b082c6..e1fe681 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,13 @@ * [Deserialization](#deserialization) - [Deserialized Types](#deserialized-types) - [Deserialization of Extra Nodes](#deserialization-of-extra-nodes) - - [Deserialization with Inheritance](#deserialization-with-inheritance) + - [Inheritance](#inheritance) + - [Constructors](#constructors) - [Deserialization Lifecycle](#deserialization-lifecycle) - [Custom Deserialization with Deserializer](#custom-deserialization-with-deserializer) - [Custom Deserialization with IDeserializable](#custom-deserialization-with-ideserializable) +* [Changelog](#changelog) + - [v1.1](#v11) ## Features @@ -445,7 +448,7 @@ You can also use `RestrictTypeAttribute` to restrict the supported types or use types. The extras are also used for the serialization and are serialized on the same level as the object. -### Deserialization with Inheritance +### Inheritance You may want to provide deserialization to interface or abstract class targets. One option would be to use a custom deserializer @@ -484,6 +487,26 @@ class C : I I obj = JSON.Deserialize("{\"type\":1}"); // obj is of type B. ``` +### Constructors + +You can deserialize objects with custom constructors using the `JSONConstructor` +attribute. The constructor arguments can have additional `JSONNode` attributes. Be +aware that only one constructor can have this attribute. + +```cs +class AClass +{ + private T _arg; + + [JSONConstructor] + public AClass([JSONNode(key = "field")] T argument) + { + _arg = argument; + } +} +var obj = Deserialize>("{\"field\":1}"); +``` + ### Deserialization Lifecycle You can listen to the deserialization lifecycle of an object by implementing the @@ -596,3 +619,10 @@ public class AClass : IDeserializable The classes that are deserialized with the `IDeserializable.Deserialize` method do not receive deserialization lifecycle calls from `IDeserializationListener`. + +## Changelog + +### v1.1 + +- Added `JSONConstructorAttribute` +- Fixed conditional instantiation bug: JSONNode kept the same after key removal diff --git a/unityjson.unitypackage b/unityjson.unitypackage index 2ae240b048b3eae10fea034ab688fc2737a9a4a6..5cbc58105c40ba5008fffe9ebf4a7e5dc38b20a3 100644 GIT binary patch literal 24073 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%0D7)F%& zhgtsTMHa|5J@A)(XQ6M67Ox)b{o#`HL4ugMlY(5U*ohDeEhwKF^1-N`peO%W_o%~V-nx6^ZKLV#vB~Fxcx?9f3<4W?R}i8%lkoQpX^lj_MY((k?Jd;1(Tbt`!K-_B86L_NFy%dNgS`{zjc zA!pH6TX14pbe_bj;;qV?**}GyIU>1x{mz;=?&?~1@5+iyj&xu{RgSp!;ClGB62t_d zu^`wC&d1Fe3hh>f-!7@8%JZ}=wsOw9lm$yg-?Gk&j!4r#v6tl;&j|ndbgR7!S8&WJ z`gp8!H~#fhTu>+Iol9foq#N-FV!5%n;Z^<8BMyZEP+M3L2JLknh(q-}@N>6g+|DSX zZQe=9c>K9rdiH3YegAQ$+RCovbH11!V!Dr5w*ItUPY7`wcFU zYr&U3{&D+(CUNLeCc5fZP$< z3W9Ox?P_!~`5$(AZS!&J&sBfwX39MjGJ^4Ow5gza?gI+B*NiOHgmV{W(6GTv;BKtQ zn2A>M6_J$+k-Q^SmktOp3@9ZkP|Z?0MhpHqZ}fPB$WlLgi<4K%lFqN&tF4b9`4^qIj6F`FD{0?Py#!8!r)q!bovxSrPr&nNu)G<) z0s^q0ZQ~=9q<^iI7zoFf4kfU9kq8J)AuG`j{|&%yZS9M=b*AKBn3F2zgz&E5Pzffi z3>Yet5im;^w|N_e@@7zN7HUx<&$L+UW)-&IkscKX=xddcbC9;yKXnC*Fx{Q&g=n(<*!@?BtZ<;2mRQ}bv^HxD;s~Qa*N`i{{Jdg| z;eDM9nph+eE^*>r=Yy1oCOAi{6}&EtQW0Cys0_I{rfz6F-jBUvZN3J>$19^n5NmL& zf+s^_X9tJs>n>I7~Qrg-Qtp!LideYdp~{9@Q6U^-}7$^8WlPUJ~vg} z$L$MFXF@E_BgGbX6Qc5c86c_K^+BK-q`}bEBEq^qWrXH}_bX<*cN=3LqcPe5&n{^M ziD$6sVC_o*b%iYzWq%AV^BI(K{V+L6 zd<7G^Sqi5eY}C8v+zx5X5o|w=>GdLBoZOwqwI%&^lr@^OZ*Xv>U%`QWlj1imLwv0p zYl1TK%Y0DohUp}V(nS?@;&XEemw|2!#%U&jlqJbWBV7pQO-Be(RDUdr_bj;g@>

}>xL364uqC;G zo4f9+5ct|L7ZpXJ>@!0a*$K$Fv)SC-+1hq9uMt?l!nu;Xcm_i=L(GRfPY;SOcSYhi z+hVQ>pVKX}oilWF)tj4h&UsrK`Xp~=SBUR!A!bfGu*HtF(Tym6Nx*ozpaQ&7oU-I~ zl^s}0ewJ)6FbD7B0-2$E?XZBMPLYPqyuW$ARRpG7G)Auda*s~|2lK1y2YU8rs)$Lq zXA|D-`%a$UusMpoidJbU;qF2W`$OyNidTeU$v-!wXllGk3ULM|?T$v1gl&(> za62hz)p03TIaHmnW618zl-cO@wFEKRhd3LQ>uGcDj5u?I$e`=4~S}YjY z+U6F-1C_RXr6@n5OgvM&3?{1yimfycq+b&Ht$j{IdMqJy?Vyqk=y#K#j70I?rRU#g z{5fnzFt^7y##19i;`nurKKN_Z(L|%cgX;S(b#SxHW~`z@FfwHrA9B@Na82y$9HFLc zcFj7Qh|`3Ar(oAojG-BZ26d30o*ea7d;CcDg=!CEoDY3i+2G%$wx6j9^G(h;uJXh0 zD?`JyE?4`3@nM>NSIK^aWVMZmo?8J6jM&X>G<^oC@oIvQl=WKPvoFntEF6NsU6qBSgn_Tq2?*sWd>#1gbXBj~=%1FhSYAqkrG_qMH{@Xi(;-!c znzK53ZgwmWT`zofNN_TOXpKUCk^tXbGIRx9Arh*s>f2>amv=eLQXRqMaGD^Z6cU|B zcRs~$FeA0) zi>=&)A66sRzqnh=W2dEYgoPR2reP7guO76Y17)!rbASdwXR!j8Ad!PFB?PIL#}>Zk^N6nJGT^!LYpk0i#$#yTZd_mpS{g{i z0qilyRwSMF?ua%cterd|@`j8_JULpM1>G#{MVg{g&z)GbMpkJz^lrE-K zBULef8`XGW_LVAg7x>X?sH(bvno~UfkxBIChqPVcZ}woyY?-Q+7`p#>_{uE8`B`@u z21n>41@_PcpHWNGPjT$aykV?4UtCt)BR#5i_LTgZ%;BbJpAiW{Oqu2UgTx z<~2tK6D>O6z=5O_sM*iVtMh81xABU{^sL}Q4&w$pZ@%5d9JN2u)mLmATTwT0b=}J3 z*L@%#%atxREJW~kUJkmNcBg8fAxd6g-WYTJT;{3G+=(0^#t;=hWxs9ki1AvzPJl|b zS{%*hI`WBk6LtPoZpO)88?QL_ZUH%G9bp00Wj5I#{kuYx8N|C0P#Zqp4RTR7AdxB^ zuWzliqu)qJPEWa_PYtb>rcmVvcI*e7FUDL|<_x>hvE?^}h7T0D2R~|HcvwwMj}0G1 zsedtG3TYAp1o8X!1c%5$Pn;-KZ8M5OAGzw}=S#5nk-{y|xz$wZ=0~-=6gk91@5j-{ z?QWP(#lm51%rARO;b#GU&!4eE9~)q7W3{rNr4-az;Ijba++(pO0%j*r9wEDBAMW)w z;ZGe8lv5M)umCw`vb`nV_vq`cojS8=iAh!4LE*IfJq@f}&8MJueDTx<`^vj0tTEVI zw~L0FB}c~(^E}Z(Gww`kqY8*o!rnl|{r)>ldXn-t){+)4vHbTL{398l@b(<(`-B4R zkMuKyLmq0@+8}(PYaGq>AzgETI|_8@1A4=4FXOm{rQLuhRg=lasM`uC(o6AJ@c_aKWXbOn`b@V6}!^$uj>2Te==TX?6Z#D{CDf z!7G;i%&EXt6!HXyq);G^f|i?x8xoXIIS|UTl&GYODeZ&D(IwsQN$pZt?--35pC9?b zlL0SxTvwp4f=1cd#wiGpv$Oxp-RnmQPCHLgl!0(=*Z?+BkHgJDg|A_`2%Qvd(} literal 23552 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