当前位置: 首页>>代码示例>>C#>>正文


C# JsonDynamicContract.PropertyNameResolver方法代码示例

本文整理汇总了C#中Newtonsoft.Json.Serialization.JsonDynamicContract.PropertyNameResolver方法的典型用法代码示例。如果您正苦于以下问题:C# JsonDynamicContract.PropertyNameResolver方法的具体用法?C# JsonDynamicContract.PropertyNameResolver怎么用?C# JsonDynamicContract.PropertyNameResolver使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Newtonsoft.Json.Serialization.JsonDynamicContract的用法示例。


在下文中一共展示了JsonDynamicContract.PropertyNameResolver方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SerializeDynamic

	/// <summary>
	/// Serializes the dynamic.
	/// </summary>
	/// <param name="writer">The writer.</param>
	/// <param name="value">The value.</param>
	/// <param name="contract">The contract.</param>
	private void SerializeDynamic(JsonWriter writer, IDynamicMetaObjectProvider value, JsonDynamicContract contract)
	{
		contract.InvokeOnSerializing(value, Serializer.Context);
		SerializeStack.Add(value);

		writer.WriteStartObject();

		foreach (string memberName in value.GetDynamicMemberNames())
		{
		object memberValue;
		if (DynamicUtils.TryGetMember(value, memberName, out memberValue))
		{
			string resolvedPropertyName = (contract.PropertyNameResolver != null)
			? contract.PropertyNameResolver(memberName)
			: memberName;
			
			writer.WritePropertyName(resolvedPropertyName);
			SerializeValue(writer, memberValue, GetContractSafe(memberValue), null, null);
		}
		}

		writer.WriteEndObject();

		SerializeStack.RemoveAt(SerializeStack.Count - 1);
		contract.InvokeOnSerialized(value, Serializer.Context);
	}
开发者ID:ThePiachu,项目名称:BitNet,代码行数:32,代码来源:JsonSerializerInternalWriter.cs

示例2: SerializeDynamic

    private void SerializeDynamic(JsonWriter writer, IDynamicMetaObjectProvider value, JsonDynamicContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
    {
      contract.InvokeOnSerializing(value, Serializer.Context);
      _serializeStack.Add(value);

      WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty);

      int initialDepth = writer.Top;

      foreach (JsonProperty property in contract.Properties)
      {
        // only write non-dynamic properties that have an explicit attribute
        if (property.HasMemberAttribute)
        {
          try
          {
            object memberValue;
            JsonContract memberContract;

            if (!CalculatePropertyValues(writer, value, contract, member, property, out memberContract, out memberValue))
              continue;

            writer.WritePropertyName(property.PropertyName);
            SerializeValue(writer, memberValue, memberContract, property, contract, member);
          }
          catch (Exception ex)
          {
            if (IsErrorHandled(value, contract, property.PropertyName, writer.ContainerPath, ex))
              HandleError(writer, initialDepth);
            else
              throw;
          }
        }
      }

      foreach (string memberName in value.GetDynamicMemberNames())
      {
        object memberValue;
        if (value.TryGetMember(memberName, out memberValue))
        {
          try
          {
            string resolvedPropertyName = (contract.PropertyNameResolver != null)
                                            ? contract.PropertyNameResolver(memberName)
                                            : memberName;

            writer.WritePropertyName(resolvedPropertyName);
            SerializeValue(writer, memberValue, GetContractSafe(memberValue), null, null, member);
          }
          catch (Exception ex)
          {
            if (IsErrorHandled(value, contract, memberName, writer.ContainerPath, ex))
              HandleError(writer, initialDepth);
            else
              throw;
          }
        }
      }

      writer.WriteEndObject();

      _serializeStack.RemoveAt(_serializeStack.Count - 1);
      contract.InvokeOnSerialized(value, Serializer.Context);
    }
开发者ID:draptik,项目名称:RepoSync,代码行数:64,代码来源:JsonSerializerInternalWriter.cs

示例3: SerializeDynamic

        private void SerializeDynamic(JsonWriter writer, IDynamicMetaObjectProvider value, JsonDynamicContract 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];

                // only write non-dynamic properties that have an explicit attribute
                if (property.HasMemberAttribute)
                {
                    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;
                    }
                }
            }

            foreach (string memberName in value.GetDynamicMemberNames())
            {
                object memberValue;
                if (contract.TryGetMember(value, memberName, out memberValue))
                {
                    try
                    {
                        JsonContract valueContract = GetContractSafe(memberValue);

                        if (!ShouldWriteDynamicProperty(memberValue))
                            continue;

                        if (CheckForCircularReference(writer, memberValue, null, valueContract, contract, member))
                        {
                            string resolvedPropertyName = (contract.PropertyNameResolver != null)
                                ? contract.PropertyNameResolver(memberName)
                                : memberName;

                            writer.WritePropertyName(resolvedPropertyName);
                            SerializeValue(writer, memberValue, valueContract, null, contract, member);
                        }
                    }
                    catch (Exception ex)
                    {
                        if (IsErrorHandled(value, contract, memberName, null, writer.ContainerPath, ex))
                            HandleError(writer, initialDepth);
                        else
                            throw;
                    }
                }
            }

            writer.WriteEndObject();

            _serializeStack.RemoveAt(_serializeStack.Count - 1);
            OnSerialized(writer, contract, value);
        }
开发者ID:OndrejPetrzilka,项目名称:Newtonsoft.Json,代码行数:74,代码来源:JsonSerializerInternalWriter.cs


注:本文中的Newtonsoft.Json.Serialization.JsonDynamicContract.PropertyNameResolver方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。