private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) { this.OnSerializing(writer, contract, value); this._serializeStack.Add(value); this.WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty); int top = writer.Top; for (int i = 0; i < contract.Properties.Count; i++) { JsonProperty jsonProperty = contract.Properties[i]; try { JsonContract valueContract; object value2; if (this.CalculatePropertyValues(writer, value, contract, member, jsonProperty, out valueContract, out value2)) { jsonProperty.WritePropertyName(writer); this.SerializeValue(writer, value2, valueContract, jsonProperty, contract, member); } } catch (Exception ex) { if (!base.IsErrorHandled(value, contract, jsonProperty.PropertyName, null, writer.ContainerPath, ex)) { throw; } this.HandleError(writer, top); } } if (contract.ExtensionDataGetter != null) { IEnumerable <KeyValuePair <object, object> > enumerable = contract.ExtensionDataGetter(value); if (enumerable != null) { foreach (KeyValuePair <object, object> current in enumerable) { JsonContract contractSafe = this.GetContractSafe(current.Key); JsonContract contractSafe2 = this.GetContractSafe(current.Value); bool flag; string propertyName = this.GetPropertyName(writer, current.Key, contractSafe, out flag); if (this.ShouldWriteReference(current.Value, null, contractSafe2, contract, member)) { writer.WritePropertyName(propertyName); this.WriteReference(writer, current.Value); } else if (this.CheckForCircularReference(writer, current.Value, null, contractSafe2, contract, member)) { writer.WritePropertyName(propertyName); this.SerializeValue(writer, current.Value, contractSafe2, null, contract, member); } } } } writer.WriteEndObject(); this._serializeStack.RemoveAt(this._serializeStack.Count - 1); this.OnSerialized(writer, contract, value); }
private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) { OnSerializing(writer, contract, value); _serializeStack.Add(value); WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty); int initialDepth = writer.Top; for (int index = 0; index < contract.Properties.Count; index++) { JsonProperty property = contract.Properties[index]; try { object memberValue; JsonContract memberContract; if (!CalculatePropertyValues(writer, value, contract, member, property, out memberContract, out memberValue)) { continue; } property.WritePropertyName(writer); SerializeValue(writer, memberValue, memberContract, property, contract, member); } catch (Exception ex) { if (IsErrorHandled(value, contract, property.PropertyName, null, writer.ContainerPath, ex)) { HandleError(writer, initialDepth); } else { throw; } } } if (contract.ExtensionDataGetter != null) { IEnumerable <KeyValuePair <object, object> > extensionData = contract.ExtensionDataGetter(value); if (extensionData != null) { foreach (KeyValuePair <object, object> e in extensionData) { JsonContract keyContract = GetContractSafe(e.Key); JsonContract valueContract = GetContractSafe(e.Value); bool escape; string propertyName = GetPropertyName(writer, e.Key, keyContract, out escape); if (ShouldWriteReference(e.Value, null, valueContract, contract, member)) { writer.WritePropertyName(propertyName); WriteReference(writer, e.Value); } else { if (!CheckForCircularReference(writer, e.Value, null, valueContract, contract, member)) { continue; } writer.WritePropertyName(propertyName); SerializeValue(writer, e.Value, valueContract, null, contract, member); } } } } writer.WriteEndObject(); _serializeStack.RemoveAt(_serializeStack.Count - 1); OnSerialized(writer, contract, value); }
private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) { object obj; JsonContract jsonContract; bool flag; this.OnSerializing(writer, contract, value); this._serializeStack.Add(value); this.WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty); int top = writer.Top; for (int i = 0; i < contract.Properties.Count; i++) { JsonProperty item = contract.Properties[i]; try { if (this.CalculatePropertyValues(writer, value, contract, member, item, out jsonContract, out obj)) { item.WritePropertyName(writer); this.SerializeValue(writer, obj, jsonContract, item, contract, member); } } catch (Exception exception) { if (!base.IsErrorHandled(value, contract, item.PropertyName, null, writer.ContainerPath, exception)) { throw; } else { this.HandleError(writer, top); } } } if (contract.ExtensionDataGetter != null) { IEnumerable <KeyValuePair <object, object> > extensionDataGetter = contract.ExtensionDataGetter(value); if (extensionDataGetter != null) { foreach (KeyValuePair <object, object> keyValuePair in extensionDataGetter) { JsonContract contractSafe = this.GetContractSafe(keyValuePair.Key); JsonContract contractSafe1 = this.GetContractSafe(keyValuePair.Value); string propertyName = this.GetPropertyName(writer, keyValuePair.Key, contractSafe, out flag); if (!this.ShouldWriteReference(keyValuePair.Value, null, contractSafe1, contract, member)) { if (!this.CheckForCircularReference(writer, keyValuePair.Value, null, contractSafe1, contract, member)) { continue; } writer.WritePropertyName(propertyName); this.SerializeValue(writer, keyValuePair.Value, contractSafe1, null, contract, member); } else { writer.WritePropertyName(propertyName); this.WriteReference(writer, keyValuePair.Value); } } } } writer.WriteEndObject(); this._serializeStack.RemoveAt(this._serializeStack.Count - 1); this.OnSerialized(writer, contract, value); }
private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) { OnSerializing(writer, contract, value); _serializeStack.Add(value); WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty); int initialDepth = writer.Top; for (int index = 0; index < contract.Properties.Count; index++) { JsonProperty property = contract.Properties[index]; try { object memberValue; JsonContract memberContract; if (!CalculatePropertyValues(writer, value, contract, member, property, out memberContract, out memberValue)) continue; property.WritePropertyName(writer); SerializeValue(writer, memberValue, memberContract, property, contract, member); } catch (Exception ex) { if (IsErrorHandled(value, contract, property.PropertyName, null, writer.ContainerPath, ex)) HandleError(writer, initialDepth); else throw; } } if (contract.MemberWriter != null) { contract.MemberWriter(writer, value, GetInternalSerializer()); } if (contract.ExtensionDataGetter != null) { IEnumerable<KeyValuePair<object, object>> extensionData = contract.ExtensionDataGetter(value); if (extensionData != null) { foreach (KeyValuePair<object, object> e in extensionData) { JsonContract keyContract = GetContractSafe(e.Key); JsonContract valueContract = GetContractSafe(e.Value); bool escape; string propertyName = GetPropertyName(writer, e.Key, keyContract, out escape); if (ShouldWriteReference(e.Value, null, valueContract, contract, member)) { writer.WritePropertyName(propertyName); WriteReference(writer, e.Value); } else { if (!CheckForCircularReference(writer, e.Value, null, valueContract, contract, member)) continue; writer.WritePropertyName(propertyName); SerializeValue(writer, e.Value, valueContract, null, contract, member); } } } } writer.WriteEndObject(); _serializeStack.RemoveAt(_serializeStack.Count - 1); OnSerialized(writer, contract, value); }
private void SerializeObject( JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) { this.OnSerializing(writer, (JsonContract)contract, value); this._serializeStack.Add(value); this.WriteObjectStart(writer, value, (JsonContract)contract, member, collectionContract, containerProperty); int top = writer.Top; for (int index = 0; index < contract.Properties.Count; ++index) { JsonProperty property = contract.Properties[index]; try { JsonContract memberContract; object memberValue; if (this.CalculatePropertyValues(writer, value, (JsonContainerContract)contract, member, property, out memberContract, out memberValue)) { property.WritePropertyName(writer); this.SerializeValue(writer, memberValue, memberContract, property, (JsonContainerContract)contract, member); } } catch (Exception ex) { if (this.IsErrorHandled(value, (JsonContract)contract, (object)property.PropertyName, (IJsonLineInfo)null, writer.ContainerPath, ex)) { this.HandleError(writer, top); } else { throw; } } } if (contract.ExtensionDataGetter != null) { IEnumerable <KeyValuePair <object, object> > keyValuePairs = contract.ExtensionDataGetter(value); if (keyValuePairs != null) { foreach (KeyValuePair <object, object> keyValuePair in keyValuePairs) { JsonContract contractSafe1 = this.GetContractSafe(keyValuePair.Key); JsonContract contractSafe2 = this.GetContractSafe(keyValuePair.Value); string propertyName = this.GetPropertyName(writer, keyValuePair.Key, contractSafe1, out bool _); if (this.ShouldWriteReference(keyValuePair.Value, (JsonProperty)null, contractSafe2, (JsonContainerContract)contract, member)) { writer.WritePropertyName(propertyName); this.WriteReference(writer, keyValuePair.Value); } else if (this.CheckForCircularReference(writer, keyValuePair.Value, (JsonProperty)null, contractSafe2, (JsonContainerContract)contract, member)) { writer.WritePropertyName(propertyName); this.SerializeValue(writer, keyValuePair.Value, contractSafe2, (JsonProperty)null, (JsonContainerContract)contract, member); } } } } writer.WriteEndObject(); this._serializeStack.RemoveAt(this._serializeStack.Count - 1); this.OnSerialized(writer, (JsonContract)contract, value); }
// Token: 0x06000BFA RID: 3066 // RVA: 0x00046DF4 File Offset: 0x00044FF4 private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) { this.OnSerializing(writer, contract, value); this._serializeStack.Add(value); this.WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty); int top = writer.Top; for (int i = 0; i < contract.Properties.Count; i++) { JsonProperty jsonProperty = contract.Properties[i]; try { JsonContract valueContract; object value2; if (this.CalculatePropertyValues(writer, value, contract, member, jsonProperty, out valueContract, out value2)) { jsonProperty.WritePropertyName(writer); this.SerializeValue(writer, value2, valueContract, jsonProperty, contract, member); } } catch (Exception ex) { if (!base.IsErrorHandled(value, contract, jsonProperty.PropertyName, null, writer.ContainerPath, ex)) { throw; } this.HandleError(writer, top); } } if (contract.ExtensionDataGetter != null) { IEnumerable<KeyValuePair<object, object>> enumerable = contract.ExtensionDataGetter(value); if (enumerable != null) { foreach (KeyValuePair<object, object> current in enumerable) { JsonContract contractSafe = this.GetContractSafe(current.Key); JsonContract contractSafe2 = this.GetContractSafe(current.Value); bool flag; string propertyName = this.GetPropertyName(writer, current.Key, contractSafe, out flag); if (this.ShouldWriteReference(current.Value, null, contractSafe2, contract, member)) { writer.WritePropertyName(propertyName); this.WriteReference(writer, current.Value); } else if (this.CheckForCircularReference(writer, current.Value, null, contractSafe2, contract, member)) { writer.WritePropertyName(propertyName); this.SerializeValue(writer, current.Value, contractSafe2, null, contract, member); } } } } writer.WriteEndObject(); this._serializeStack.RemoveAt(this._serializeStack.Count - 1); this.OnSerialized(writer, contract, value); }