/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { if (value == null) { writer.WriteNull(); return; } Enum e = (Enum)value; string enumName = e.ToString("G"); if (char.IsNumber(enumName[0]) || enumName[0] == '-') { // enum value has no name so write number writer.WriteValue(value); } else { Type enumType = e.GetType(); string finalName = EnumUtils.ToEnumName(enumType, enumName, CamelCaseText); writer.WriteValue(finalName); } }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { long ticks; if (value is DateTime) { DateTime dateTime = (DateTime)value; DateTime utcDateTime = dateTime.ToUniversalTime(); ticks = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(utcDateTime); } #if !NET20 else if (value is DateTimeOffset) { DateTimeOffset dateTimeOffset = (DateTimeOffset)value; DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime(); ticks = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(utcDateTimeOffset.UtcDateTime); } #endif else { throw new JsonSerializationException("Expected date object value."); } writer.WriteStartConstructor("Date"); writer.WriteValue(ticks); writer.WriteEndConstructor(); }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { DefaultContractResolver resolver = internalWriter.Serializer.ContractResolver as DefaultContractResolver; Type unionType = UnionTypeLookupCache.Get(value.GetType()); Union union = UnionCache.Get(unionType); int tag = (int)union.TagReader.Invoke(value); UnionCase caseInfo = union.Cases.Single(c => c.Tag == tag); writer.WriteStartObject(); writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(CasePropertyName) : CasePropertyName); writer.WriteValue(caseInfo.Name); if (caseInfo.Fields != null && caseInfo.Fields.Length > 0) { object[] fields = (object[])caseInfo.FieldReader.Invoke(value); writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(FieldsPropertyName) : FieldsPropertyName); writer.WriteStartArray(); foreach (object field in fields) { internalWriter.Serialize(writer, field, field.GetType()); } writer.WriteEndArray(); } writer.WriteEndObject(); }
public JsonSerializerProxy(JsonSerializerWriter serializerWriter) { ValidationUtils.ArgumentNotNull(serializerWriter, nameof(serializerWriter)); _serializerWriter = serializerWriter; _serializer = serializerWriter.Serializer; }
internal virtual void SerializeInternal(JsonWriter jsonWriter, object value) { ValidationUtils.ArgumentNotNull(jsonWriter, "jsonWriter"); JsonSerializerWriter serializerWriter = new JsonSerializerWriter(this); serializerWriter.Serialize(jsonWriter, value); }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { if (value == null) { writer.WriteNull(); return; } byte[] data = GetByteArray(value); writer.WriteValue(data); }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { ReflectionObject reflectionObject = ReflectionObjectPerType.Get(value.GetType()); DefaultContractResolver resolver = internalWriter.Serializer.ContractResolver as DefaultContractResolver; writer.WriteStartObject(); writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(KeyName) : KeyName); internalWriter.Serialize(writer, reflectionObject.GetValue(value, KeyName), reflectionObject.GetType(KeyName)); writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(ValueName) : ValueName); internalWriter.Serialize(writer, reflectionObject.GetValue(value, ValueName), reflectionObject.GetType(ValueName)); writer.WriteEndObject(); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { var res = (Resolution)value; writer.WriteStartObject(); writer.WritePropertyName("height"); writer.WriteValue(res.height); writer.WritePropertyName("width"); writer.WriteValue(res.width); writer.WritePropertyName("refreshRate"); writer.WriteValue(res.refreshRate); writer.WriteEndObject(); }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { Regex regex = (Regex)value; BsonWriter bsonWriter = writer as BsonWriter; if (bsonWriter != null) { WriteBson(bsonWriter, regex); } else { WriteJson(writer, regex, internalWriter); } }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { if (value == null) { writer.WriteNull(); } else if (value is Version) { writer.WriteValue(value.ToString()); } else { throw new JsonSerializationException("Expected Version object value"); } }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { BsonObjectId objectId = (BsonObjectId)value; BsonWriter bsonWriter = writer as BsonWriter; if (bsonWriter != null) { bsonWriter.WriteObjectId(objectId.Value); } else { writer.WriteValue(objectId.Value); } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { if (null == value) { writer.WriteNull(); return; } var uri = value as Uri; if (uri == null) { throw new InvalidOperationException( "Unhandled case for UriConverter. Check to see if this converter has been applied to the wrong serialization type."); } writer.WriteValue(uri.OriginalString); return; }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { EnsureReflectionObject(value.GetType()); DefaultContractResolver resolver = internalWriter.Serializer.ContractResolver as DefaultContractResolver; string keyName = (string)_reflectionObject.GetValue(value, KeyPropertyName); object keyValue = _reflectionObject.GetValue(value, ValuePropertyName); Type keyValueType = (keyValue != null) ? keyValue.GetType() : null; writer.WriteStartObject(); writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(KeyPropertyName) : KeyPropertyName); writer.WriteValue(keyName); writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(TypePropertyName) : TypePropertyName); writer.WriteValue((keyValueType != null) ? keyValueType.FullName : null); writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(ValuePropertyName) : ValuePropertyName); if (keyValueType != null) { string valueJson; if (JsonSerializerWriter.TryConvertToString(keyValue, keyValueType, out valueJson)) { writer.WriteValue(valueJson); } else { writer.WriteValue(keyValue); } } else { writer.WriteNull(); } writer.WriteEndObject(); }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { string text; if (value is DateTime) { DateTime dateTime = (DateTime)value; if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal) { dateTime = dateTime.ToUniversalTime(); } text = dateTime.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture); } #if !NET20 else if (value is DateTimeOffset) { DateTimeOffset dateTimeOffset = (DateTimeOffset)value; if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal) { dateTimeOffset = dateTimeOffset.ToUniversalTime(); } text = dateTimeOffset.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture); } #endif else { throw new JsonSerializationException("Unexpected value when converting date. Expected DateTime or DateTimeOffset, got {0}.".FormatWith(CultureInfo.InvariantCulture, ReflectionUtils.GetObjectType(value))); } writer.WriteValue(text); }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { if (objectType == typeof(Rect)) { var rect = (Rect)value; internalWriter.SerializeProperty(writer, "position", rect.position); internalWriter.SerializeProperty(writer, "size", rect.size); } #if UNITY_2017_2_OR_NEWER else if (objectType == typeof(Vector2Int)) { var rect = (RectInt)value; internalWriter.SerializeProperty(writer, "position", rect.position); internalWriter.SerializeProperty(writer, "size", rect.size); } #endif }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { //var instance = (UnityEngine.Renderer)value; //WriteObjectProperties(writer, instance, internalWriter); internalWriter.SerializeObjectProperties(writer, value, contract, null, null, null, this.propertiesToIgnore.ToArray()); }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { Shader shader = (Shader)value; writer.WriteProperty("name", shader.name); writer.WriteProperty("maximumLOD", shader.maximumLOD); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { //throw new NotImplementedException(); }
public virtual void WriteObjectProperties(JsonWriter writer, Renderer instance, JsonSerializerWriter internalWriter) { internalWriter.SerializeProperty(writer, "sharedMaterials", instance.sharedMaterials); }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { Color color = (Color)value; writer.WritePropertyName("a"); writer.WriteValue(color.a); writer.WritePropertyName("r"); writer.WriteValue(color.r); writer.WritePropertyName("g"); writer.WriteValue(color.g); writer.WritePropertyName("b"); writer.WriteValue(color.b); }
/// <summary> /// Writes this token to a <see cref="JsonWriter"/>. /// </summary> /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param> /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param> public override void WriteTo(JsonWriter writer, params JsonConverter[] converters) { if (converters != null && converters.Length > 0 && _value != null) { JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType()); if (matchingConverter != null && matchingConverter.CanWrite) { JsonSerializerWriter internalWriter = new JsonSerializerWriter(JsonSerializer.CreateDefault()); matchingConverter.WriteJson(writer, _value, internalWriter); return; } } switch (_valueType) { case JTokenType.Comment: writer.WriteComment((_value != null) ? _value.ToString() : null); return; case JTokenType.Raw: writer.WriteRawValue((_value != null) ? _value.ToString() : null); return; case JTokenType.Null: writer.WriteNull(); return; case JTokenType.Undefined: writer.WriteUndefined(); return; case JTokenType.Integer: if (_value is int) { writer.WriteValue((int)_value); } else if (_value is long) { writer.WriteValue((long)_value); } else if (_value is ulong) { writer.WriteValue((ulong)_value); } #if !(NET20 || NET35 || PORTABLE40 || (UNITY_WSA || UNITY_WINRT)) else if (_value is BigInteger) { writer.WriteValue((BigInteger)_value); } #endif else { writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture)); } return; case JTokenType.Float: if (_value is decimal) { writer.WriteValue((decimal)_value); } else if (_value is double) { writer.WriteValue((double)_value); } else if (_value is float) { writer.WriteValue((float)_value); } else { writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture)); } return; case JTokenType.String: writer.WriteValue((_value != null) ? _value.ToString() : null); return; case JTokenType.Boolean: writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture)); return; case JTokenType.Date: #if !NET20 if (_value is DateTimeOffset) { writer.WriteValue((DateTimeOffset)_value); } else #endif { writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture)); } return; case JTokenType.Bytes: writer.WriteValue((byte[])_value); return; case JTokenType.Guid: writer.WriteValue((_value != null) ? (Guid?)_value : null); return; case JTokenType.TimeSpan: writer.WriteValue((_value != null) ? (TimeSpan?)_value : null); return; case JTokenType.Uri: writer.WriteValue((Uri)_value); return; } throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type."); }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { // can write is set to false }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { var instance = (UnityEngine.RectTransform)value; internalWriter.SerializeProperty(writer, "anchorMin", instance.anchorMin); internalWriter.SerializeProperty(writer, "anchorMax", instance.anchorMax); internalWriter.SerializeProperty(writer, "anchoredPosition", instance.anchoredPosition); internalWriter.SerializeProperty(writer, "sizeDelta", instance.sizeDelta); internalWriter.SerializeProperty(writer, "pivot", instance.pivot); internalWriter.SerializeProperty(writer, "offsetMin", instance.offsetMin); internalWriter.SerializeProperty(writer, "offsetMax", instance.offsetMax); internalWriter.SerializeProperty(writer, "position", instance.position); internalWriter.SerializeProperty(writer, "rotation", instance.rotation); internalWriter.SerializeProperty(writer, "localScale", instance.localScale); internalWriter.SerializeProperty(writer, "parent", instance.parent); internalWriter.SerializeProperty(writer, "hideFlags", instance.hideFlags); }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { Material material = (Material)value; internalWriter.SerializeProperty(writer, "shader", material.shader); writer.WriteProperty("name", material.name); internalWriter.SerializeProperty(writer, "shaderKeywords", material.shaderKeywords); writer.WriteProperty("renderQueue", material.renderQueue); writer.WriteProperty("globalIlluminationFlags", material.globalIlluminationFlags); writer.WriteProperty("doubleSidedGI", material.doubleSidedGI); writer.WriteProperty("enableInstancing", material.enableInstancing); RuntimeMaterialProperties properties = MaterialPropertiesResolver.Current.GetMaterialProperties(material); if (properties != null) { List <JsonSerializedMaterialProperty> serializableProperties = new List <JsonSerializedMaterialProperty>(); for (int i = 0; i < properties.Properties.Count; i++) { RuntimeMaterialProperty property = properties.Properties[i]; JsonSerializedMaterialProperty serializedProperty = new JsonSerializedMaterialProperty(); serializedProperty.name = property.Name; serializedProperty.type = property.Type; switch (property.Type) { case RuntimeMaterialPropertyType.Color: serializedProperty.value = material.GetColor(property.Name); break; case RuntimeMaterialPropertyType.Vector: serializedProperty.value = material.GetVector(property.Name); break; case RuntimeMaterialPropertyType.Float: serializedProperty.value = material.GetFloat(property.Name); break; case RuntimeMaterialPropertyType.Range: serializedProperty.value = material.GetFloat(property.Name); break; case RuntimeMaterialPropertyType.Texture: serializedProperty.value = material.GetTexture(property.Name); break; } serializableProperties.Add(serializedProperty); //internalWriter.SerializeProperty(writer, MaterialPropertyNamePrefix + property.Name, serializedProperty); } internalWriter.SerializeProperty(writer, MaterialPropertiesName, serializableProperties); } // Serialize main properties when there are no pre-defined properties available for this material else { internalWriter.SerializeProperty(writer, "color", material.color); internalWriter.SerializeProperty(writer, "mainTexture", material.mainTexture); internalWriter.SerializeProperty(writer, "mainTextureOffset", material.mainTextureOffset); internalWriter.SerializeProperty(writer, "mainTextureScale", material.mainTextureScale); } }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { Quaternion quaternion = (Quaternion)value; writer.WritePropertyName("x"); writer.WriteValue(quaternion.x); writer.WritePropertyName("y"); writer.WriteValue(quaternion.y); writer.WritePropertyName("z"); writer.WriteValue(quaternion.z); writer.WritePropertyName("w"); writer.WriteValue(quaternion.w); }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { if (objectType == typeof(Vector2)) { var vector = (Vector2)value; WriteVector(writer, vector.x, vector.y, null, null); } else if (objectType == typeof(Vector3)) { var vector = (Vector3)value; WriteVector(writer, vector.x, vector.y, vector.z, null); } else if (objectType == typeof(Vector4)) { var vector = (Vector4)value; WriteVector(writer, vector.x, vector.y, vector.z, vector.w); } #if UNITY_2017_2_OR_NEWER else if (objectType == typeof(Vector2Int)) { var vector = (Vector2Int)value; WriteVector(writer, vector.x, vector.y, null, null); } else if (objectType == typeof(Vector3Int)) { var vector = (Vector3Int)value; WriteVector(writer, vector.x, vector.y, vector.z, null); } #endif }
public override void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter) { var instance = (UnityEngine.Mesh)value; #if UNITY_2017_3 internalWriter.SerializeProperty(writer, "indexFormat", instance.indexFormat); #endif internalWriter.SerializeProperty(writer, "bindposes", instance.bindposes); writer.WriteProperty("subMeshCount", instance.subMeshCount); internalWriter.SerializeProperty(writer, "bounds", instance.bounds); internalWriter.SerializeProperty(writer, "vertices", instance.vertices); internalWriter.SerializeProperty(writer, "normals", instance.normals); internalWriter.SerializeProperty(writer, "tangents", instance.tangents); internalWriter.SerializeProperty(writer, "uv", instance.uv); internalWriter.SerializeProperty(writer, "uv2", instance.uv2); internalWriter.SerializeProperty(writer, "uv3", instance.uv3); internalWriter.SerializeProperty(writer, "uv4", instance.uv4); internalWriter.SerializeProperty(writer, "colors", instance.colors); internalWriter.SerializeProperty(writer, "colors32", instance.colors32); writer.WritePropertyName("triangles"); writer.WriteStartArray(); for (int i = 0; i < instance.subMeshCount; i++) { internalWriter.Serialize(writer, instance.GetTriangles(i)); } writer.WriteEndArray(); writer.WritePropertyName("indices"); writer.WriteStartArray(); for (int i = 0; i < instance.subMeshCount; i++) { SerializedIndices serializedIndices = new SerializedIndices(); serializedIndices.meshTopology = instance.GetTopology(i); serializedIndices.indices = instance.GetIndices(i); internalWriter.Serialize(writer, serializedIndices); } writer.WriteEndArray(); internalWriter.SerializeProperty(writer, "boneWeights", instance.boneWeights); writer.WriteProperty("name", instance.name); internalWriter.SerializeProperty(writer, "hideFlags", instance.hideFlags); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { if (value == null || (value is UnityEngine.Object && value as UnityEngine.Object == null)) { writer.WriteNull(); return; } Type objectType = value.GetType(); internalWriter._rootType = objectType; internalWriter._rootLevel = internalWriter._serializeStack.Count + 1; JsonObjectContract contract = (JsonObjectContract)internalWriter.GetContractSafe(value); try { if (internalWriter.ShouldWriteReference(value, null, contract, null, null)) { internalWriter.WriteReference(writer, value); } else { if (value == null) { writer.WriteNull(); return; } internalWriter.OnSerializing(writer, contract, value); internalWriter._serializeStack.Add(value); internalWriter.WriteObjectStart(writer, value, contract, null, null, null); WriteProperties(contract, writer, value, objectType, internalWriter); writer.WriteEndObject(); internalWriter._serializeStack.RemoveAt(internalWriter._serializeStack.Count - 1); internalWriter.OnSerialized(writer, contract, value); } } catch (Exception ex) { if (internalWriter.IsErrorHandled(null, contract, null, null, writer.Path, ex)) { internalWriter.HandleError(writer, 0); } else { // clear context in case serializer is being used inside a converter // if the converter wraps the error then not clearing the context will cause this error: // "Current error context error is different to requested error." internalWriter.ClearErrorContext(); throw; } } finally { // clear root contract to ensure that if level was > 1 then it won't // accidently be used for non root values internalWriter._rootType = null; } }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public override void WriteJson(JsonWriter writer, object value, JsonSerializerWriter internalWriter) { throw new NotSupportedException("CustomCreationConverter should only be used while deserializing."); }
public abstract void WriteProperties(JsonObjectContract contract, JsonWriter writer, object value, Type objectType, JsonSerializerWriter internalWriter);