private static bool JsonSerializeBaseClassLibraryType(this JsonWriter writer, string name, object value) { if (null == value) { if (null == name) { writer.ArrayNull(); } else { writer.NullPair(name); } return true; } if (writer.JsonSerializeBuiltInType(name, value)) { return true; } if (value is DateTime) { if (null == name) { writer.ArrayValue((DateTime)value); } else { writer.Pair(name, (DateTime)value); } return true; } if (value is DateTimeOffset) { if (null == name) { writer.ArrayValue((DateTimeOffset)value); } else { writer.Pair(name, (DateTimeOffset)value); } return true; } if (value is Guid) { if (null == name) { writer.ArrayValue((Guid)value); } else { writer.Pair(name, (Guid)value); } return true; } if (value is TimeSpan) { if (null == name) { writer.ArrayValue((TimeSpan)value); } else { writer.Pair(name, (TimeSpan)value); } return true; } if (value is Enum) { if (null == name) { writer.ArrayValue(value.ToString()); } else { writer.Pair(name, value.ToString()); } return true; } var uri = value as Uri; if (null != uri) { if (null == name) { writer.ArrayValue(uri); } else { writer.Pair(name, uri); } return true; } if (0 == value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Length) { if (null == name) { writer.ArrayValue(value.ToString()); } else { writer.Pair(name, value.ToString()); } return true; } return false; }
private static bool JsonSerializeFloatingPointType(this JsonWriter writer, string name, object value) { if (value is double) { if (null == name) { writer.ArrayValue((double)value); } else { writer.Pair(name, (double)value); } return true; } if (value is float) { if (null == name) { writer.ArrayValue((float)value); } else { writer.Pair(name, (float)value); } return true; } return false; }
private static bool JsonSerializeIntegralType(this JsonWriter writer, string name, object value) { if (value is byte) { if (null == name) { writer.ArrayValue((byte)value); } else { writer.Pair(name, (byte)value); } return true; } if (value is char) { if (null == name) { writer.ArrayValue((char)value); } else { writer.Pair(name, (char)value); } return true; } if (value is short) { if (null == name) { writer.ArrayValue((short)value); } else { writer.Pair(name, (short)value); } return true; } if (value is int) { if (null == name) { writer.ArrayValue((int)value); } else { writer.Pair(name, (int)value); } return true; } if (value is long) { if (null == name) { writer.ArrayValue((long)value); } else { writer.Pair(name, (long)value); } return true; } return false; }
private static bool JsonSerializeBuiltInType(this JsonWriter writer, string name, object value) { if (writer.JsonSerializeIntegralType(name, value)) { return true; } if (writer.JsonSerializeFloatingPointType(name, value)) { return true; } if (value is bool) { if (null == name) { writer.ArrayValue((bool)value); } else { writer.Pair(name, (bool)value); } return true; } if (value is decimal) { if (null == name) { writer.ArrayValue((decimal)value); } else { writer.Pair(name, (decimal)value); } return true; } var str = value as string; if (null != str) { if (null == name) { writer.ArrayValue(str); } else { writer.Pair(name, str); } return true; } return false; }