void _writeObject(object obj, EasyJsonWriter writer) { if (obj == null) { writer.WriteJsonValue(null); return; } if (++_depth > MAX_DEPTH) { throw new EasyJsonException("Class nested level is beyond max depth, check whether there is a loop"); } Type t = obj.GetType(); EasyJsonController controller = GetController(t); if (controller != null) { writer.WriteJsonValue(controller.ObjectToJson(obj)); return; } writer.WriteObjectStart(); JsonClassMetadata metadata = _getMetadata(t); foreach (KeyValuePair <string, FieldInfo> kv in metadata.Fields) { _writeObject(kv.Key, kv.Value.GetValue(obj), writer); } foreach (KeyValuePair <string, PropertyInfo> kv in metadata.Properties) { MethodInfo getMethod = kv.Value.GetGetMethod(); if (getMethod == null) { throw new EasyJsonException("Fail to access getter of " + kv.Value.Name); } if (getMethod.GetParameters().Length > 0) { continue; } _writeObject(kv.Key, getMethod.Invoke(obj, null), writer); } if (metadata.IsDynamicType) { _writeObject(DYNAMIC_TYPE_NAME, t, writer); } writer.WriteObjectEnd(); writer.WriteJsonValue(""); }
public override string ObjectToJson(object obj) { Type ut = Enum.GetUnderlyingType(obj.GetType()); EasyJsonController controller = GetController(ut); if (controller == null) { throw new EasyJsonException("Doesn't support Enum parser whose underlying type is " + ut.ToString()); } return(controller.ObjectToJson(Convert.ChangeType(obj, ut))); }
public override string ObjectToJson(object obj) { if (obj == null) { return(null); } Type ut = Nullable.GetUnderlyingType(obj.GetType()); EasyJsonController controller = GetController(ut); if (controller == null) { throw new EasyJsonException("Doesn't support JSON parser for Nullable " + ut.ToString()); } return(controller.ObjectToJson(obj)); }
public static string ToJson(object obj) { EasyJsonController controller = GetMainController(); return(controller.ObjectToJson(obj)); }