/// <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, JsonSerializer serializer)
    {
      long ticks;

      if (value is DateTime)
      {
        DateTime dateTime = (DateTime)value;
        DateTime utcDateTime = dateTime.ToUniversalTime();
        ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(utcDateTime);
      }
#if !PocketPC && !NET20
      else if (value is DateTimeOffset)
      {
        DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
        DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime();
        ticks = JsonConvert.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, JsonSerializer serializer)
        {
            long ticks;

            if (value is DateTime)
            {
                var dateTime = (DateTime)value;
                var utcDateTime = dateTime.ToUniversalTime();
                ticks = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(utcDateTime);
            }
            else if (value is DateTimeOffset)
            {
                var dateTimeOffset = (DateTimeOffset)value;
                var utcDateTimeOffset = dateTimeOffset.ToUniversalTime();
                ticks = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(utcDateTimeOffset.UtcDateTime);
            }
            else
            {
                throw new JsonSerializationException("Expected date object value.");
            }

            writer.WriteStartConstructor("Date");
            writer.WriteValue(ticks);
            writer.WriteEndConstructor();
        }
 // Token: 0x06000684 RID: 1668
 // RVA: 0x0003753C File Offset: 0x0003573C
 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
 {
     if (!(value is DateTime))
     {
         throw new JsonSerializationException("Expected date object value.");
     }
     DateTime dateTime = ((DateTime)value).ToUniversalTime();
     long value2 = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(dateTime);
     writer.WriteStartConstructor("Date");
     writer.WriteValue(value2);
     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>
    public override void WriteJson(JsonWriter writer, object value)
    {
      long ticks;

      if (value is DateTime)
      {
        DateTime dateTime = (DateTime)value;
        DateTime utcDateTime = dateTime.ToUniversalTime();
        ticks = JavaScriptConvert.ConvertDateTimeToJavaScriptTicks(utcDateTime);
      }
      else
      {
        DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
        DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime();
        ticks = JavaScriptConvert.ConvertDateTimeToJavaScriptTicks(utcDateTimeOffset.UtcDateTime);
      }

      writer.WriteStartConstructor("Date");
      writer.WriteValue(ticks);
      writer.WriteEndConstructor();
    }
Example #5
0
        /// <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)
        {
            writer.WriteStartConstructor(_name);

            foreach (JToken token in Children())
            {
            token.WriteTo(writer, converters);
            }

            writer.WriteEndConstructor();
        }
    private void SerializeNode(JsonWriter writer, XmlNode node, bool writePropertyName)
    {
      switch (node.NodeType)
      {
        case XmlNodeType.Document:
        case XmlNodeType.DocumentFragment:
          SerializeGroupedNodes(writer, node);
          break;
        case XmlNodeType.Element:
          if (writePropertyName)
            writer.WritePropertyName(node.Name);

          if (ValueAttributes(node.Attributes).Count() == 0 && node.ChildNodes.Count == 1
                  && node.ChildNodes[0].NodeType == XmlNodeType.Text)
          {
            // write elements with a single text child as a name value pair
            writer.WriteValue(node.ChildNodes[0].Value);
          }
          else if (node.ChildNodes.Count == 0 && CollectionUtils.IsNullOrEmpty(node.Attributes))
          {
            // empty element
            writer.WriteNull();
          }
          else if (node.ChildNodes.OfType<XmlElement>().Where(x => x.Name.StartsWith("-")).Count() > 1)
          {
            XmlElement constructorValueElement = node.ChildNodes.OfType<XmlElement>().Where(x => x.Name.StartsWith("-")).First();
            string constructorName = constructorValueElement.Name.Substring(1);

            writer.WriteStartConstructor(constructorName);

            for (int i = 0; i < node.ChildNodes.Count; i++)
            {
              SerializeNode(writer, node.ChildNodes[i], false);
            }

            writer.WriteEndConstructor();
          }
          else
          {
            writer.WriteStartObject();

            for (int i = 0; i < node.Attributes.Count; i++)
            {
              SerializeNode(writer, node.Attributes[i], true);
            }

            SerializeGroupedNodes(writer, node);

            writer.WriteEndObject();
          }

          break;
        case XmlNodeType.Comment:
          if (writePropertyName)
            writer.WriteComment(node.Value);
          break;
        case XmlNodeType.Attribute:
        case XmlNodeType.Text:
        case XmlNodeType.CDATA:
        case XmlNodeType.ProcessingInstruction:
        case XmlNodeType.Whitespace:
        case XmlNodeType.SignificantWhitespace:
          if (node.Prefix == "xmlns" && node.Value == JsonNamespaceUri)
            break;
          else if (node.NamespaceURI == JsonNamespaceUri)
            break;

          if (writePropertyName)
            writer.WritePropertyName(GetPropertyName(node));
          writer.WriteValue(node.Value);
          break;
        case XmlNodeType.XmlDeclaration:
          XmlDeclaration declaration = (XmlDeclaration)node;
          writer.WritePropertyName(GetPropertyName(node));
          writer.WriteStartObject();

          if (!string.IsNullOrEmpty(declaration.Version))
          {
            writer.WritePropertyName("@version");
            writer.WriteValue(declaration.Version);
          }
          if (!string.IsNullOrEmpty(declaration.Encoding))
          {
            writer.WritePropertyName("@encoding");
            writer.WriteValue(declaration.Encoding);
          }
          if (!string.IsNullOrEmpty(declaration.Standalone))
          {
            writer.WritePropertyName("@standalone");
            writer.WriteValue(declaration.Standalone);
          }

          writer.WriteEndObject();
          break;
        default:
          throw new JsonSerializationException("Unexpected XmlNodeType when serializing nodes: " + node.NodeType);
      }
    }
        public override void WriteTo(JsonWriter writer)
        {
            writer.WriteStartConstructor(_name);

              foreach (JToken token in Children())
              {
            token.WriteTo(writer);
              }

              writer.WriteEndConstructor();
        }
        public void JsonReaderToJsonWriter(JsonReader reader, JsonWriter writer)
        {
            do
            {
                //log.Info("reader.TokenType-->" + reader.TokenType);
                switch (reader.TokenType)
                {
                case JsonToken.None:
                    break;

                case JsonToken.StartObject:
                    writer.WriteStartObject();
                    break;

                case JsonToken.StartArray:
                    writer.WriteStartArray();
                    break;

                case JsonToken.PropertyName:
                    writer.WritePropertyName(reader.Value.ToString());
                    break;

                case JsonToken.Comment:
                    writer.WriteComment((reader.Value != null) ? reader.Value.ToString() : null);
                    break;

                //数字/字符/布尔型/GUID都转成string
                case JsonToken.Integer:
                case JsonToken.Float:
                case JsonToken.String:
                case JsonToken.Boolean:
                case JsonToken.Bytes:
                    writer.WriteValue(reader.Value.ToString());
                    break;

                case JsonToken.Null:
                    if (this.PropertyNullValueReplaceValue != null)
                    {
                        writer.WriteValue(this.PropertyNullValueReplaceValue);
                    }
                    else
                    {
                        writer.WriteNull();
                    }
                    break;

                case JsonToken.Undefined:
                    writer.WriteUndefined();
                    break;

                case JsonToken.EndObject:
                    writer.WriteEndObject();
                    break;

                case JsonToken.EndArray:
                    writer.WriteEndArray();
                    break;

                case JsonToken.EndConstructor:
                    writer.WriteEndConstructor();
                    break;

                case JsonToken.Date:
                    if (reader.Value != null)
                    {
                        writer.WriteValue(((DateTime)reader.Value).ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    break;

                case JsonToken.Raw:
                    writer.WriteRawValue((reader.Value != null) ? reader.Value.ToString() : null);
                    break;
                }
            } while (reader.Read());
        }
Example #9
0
 public override void WriteEndConstructor()
 {
     _textWriter.WriteEndConstructor();
     _innerWriter.WriteEndConstructor();
     base.WriteEndConstructor();
 }
Example #10
0
        private void WriteToken(JSchema context, JsonWriter writer, JToken token, bool isDefinitions = false)
        {
            if (token is JObject o)
            {
                JSchemaAnnotation?schemaAnnotation = o.Annotation <JSchemaAnnotation>();
                JSchema?          tokenSchema      = schemaAnnotation?.GetSchema(null);

                if (tokenSchema != null)
                {
                    ReferenceOrWriteSchema(context, tokenSchema, null, isDefinitions);
                }
                else
                {
                    writer.WriteStartObject();

                    foreach (JProperty property in o.Properties())
                    {
                        writer.WritePropertyName(property.Name);

                        JToken value = property.Value;
                        if (value != null)
                        {
                            WriteToken(context, writer, value, isDefinitions);
                        }
                        else
                        {
                            writer.WriteNull();
                        }
                    }

                    writer.WriteEndObject();
                }
            }
            else if (token is JArray)
            {
                JArray a = (JArray)token;

                writer.WriteStartArray();

                for (int i = 0; i < a.Count; i++)
                {
                    WriteToken(context, writer, a[i]);
                }

                writer.WriteEndArray();
            }
            else if (token is JConstructor)
            {
                JConstructor c = (JConstructor)token;

                writer.WriteStartConstructor(c.Name !);

                foreach (JToken t in c.Children())
                {
                    WriteToken(context, writer, t);
                }

                writer.WriteEndConstructor();
            }
            else if (token is JValue)
            {
                token.WriteTo(writer);
            }
            else
            {
                writer.WriteNull();
            }
        }
Example #11
0
 public override void WriteEndConstructor()
 {
     _innerWriter.WriteEndConstructor();
 }
Example #12
0
        public override void WriteJson(JsonWriter writer, object value)
        {
            IList items = (IList)value;

            if (value != null && items.Count > 0)
            {
                if (items.Count == 1 && !CanBeSingleItemArray(items[0]))
                {
                    Control item = (Control)items[0];
                    Tab     tab  = item as Tab;
                    if (!item.Visible || (tab != null && tab.Hidden))
                    {
                        writer.WriteNull();
                        return;
                    }

                    /// TODO: Check for ToolkbarBase because ExtJS can not render a Toolbar with xtype.
                    /// Make a "new" constructor instead of lazy instanciation.
                    if (items[0] is ToolbarBase)
                    {
                        object[] attrs = items[0].GetType().GetCustomAttributes(typeof(InstanceOfAttribute), true);

                        string instanceOf = "Ext.Toolbar";

                        if (attrs.Length == 1)
                        {
                            string temp = ((InstanceOfAttribute)attrs[0]).ClassName;

                            if (!string.IsNullOrEmpty(temp))
                            {
                                instanceOf = temp;
                            }
                        }

                        writer.WriteStartConstructor(instanceOf);
                        writer.WriteRawValue(this.Format(items[0] as Control));
                        writer.WriteEndConstructor();
                    }
                    else
                    {
                        writer.WriteRawValue(this.Format(items[0] as Control));
                    }
                }
                else
                {
                    bool visible = false;

                    foreach (Observable item in items)
                    {
                        Tab tab = item as Tab;
                        if (item.Visible && (tab == null || !tab.Hidden))
                        {
                            visible = true;
                        }
                    }

                    if (visible)
                    {
                        writer.WriteStartArray();

                        foreach (Observable item in items)
                        {
                            Tab tab = item as Tab;
                            if (item.Visible && (tab == null || !tab.Hidden))
                            {
                                writer.WriteRawValue(this.Format(item));
                            }
                        }

                        writer.WriteEndArray();
                    }
                    else
                    {
                        writer.WriteNull();
                    }
                }
            }
        }
Example #13
0
 // Token: 0x060008CE RID: 2254
 // RVA: 0x0003D590 File Offset: 0x0003B790
 public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
 {
     writer.WriteStartConstructor(this._name);
     foreach (JToken current in this.Children())
     {
         current.WriteTo(writer, converters);
     }
     writer.WriteEndConstructor();
 }
Example #14
0
        private void SerializeNode(JsonWriter writer, XmlNode node, bool writePropertyName)
        {
            switch (node.NodeType)
            {
            case XmlNodeType.Document:
            case XmlNodeType.DocumentFragment:
                SerializeGroupedNodes(writer, node);
                break;

            case XmlNodeType.Element:
                if (writePropertyName)
                {
                    writer.WritePropertyName(node.Name);
                }

                if (ValueAttributes(node.Attributes).Count() == 0 && node.ChildNodes.Count == 1 &&
                    node.ChildNodes[0].NodeType == XmlNodeType.Text)
                {
                    // write elements with a single text child as a name value pair
                    writer.WriteValue(node.ChildNodes[0].Value);
                }
                else if (node.ChildNodes.Count == 0 && CollectionUtils.IsNullOrEmpty(node.Attributes))
                {
                    // empty element
                    writer.WriteNull();
                }
                else if (node.ChildNodes.OfType <XmlElement>().Where(x => x.Name.StartsWith("-")).Count() > 1)
                {
                    XmlElement constructorValueElement = node.ChildNodes.OfType <XmlElement>().Where(x => x.Name.StartsWith("-")).First();
                    string     constructorName         = constructorValueElement.Name.Substring(1);

                    writer.WriteStartConstructor(constructorName);

                    for (int i = 0; i < node.ChildNodes.Count; i++)
                    {
                        SerializeNode(writer, node.ChildNodes[i], false);
                    }

                    writer.WriteEndConstructor();
                }
                else
                {
                    writer.WriteStartObject();

                    for (int i = 0; i < node.Attributes.Count; i++)
                    {
                        SerializeNode(writer, node.Attributes[i], true);
                    }

                    SerializeGroupedNodes(writer, node);

                    writer.WriteEndObject();
                }

                break;

            case XmlNodeType.Comment:
                if (writePropertyName)
                {
                    writer.WriteComment(node.Value);
                }
                break;

            case XmlNodeType.Attribute:
            case XmlNodeType.Text:
            case XmlNodeType.CDATA:
            case XmlNodeType.ProcessingInstruction:
            case XmlNodeType.Whitespace:
            case XmlNodeType.SignificantWhitespace:
                if (node.Prefix == "xmlns" && node.Value == JsonNamespaceUri)
                {
                    break;
                }
                else if (node.NamespaceURI == JsonNamespaceUri)
                {
                    break;
                }

                if (writePropertyName)
                {
                    writer.WritePropertyName(GetPropertyName(node));
                }
                writer.WriteValue(node.Value);
                break;

            case XmlNodeType.XmlDeclaration:
                XmlDeclaration declaration = (XmlDeclaration)node;
                writer.WritePropertyName(GetPropertyName(node));
                writer.WriteStartObject();

                if (!string.IsNullOrEmpty(declaration.Version))
                {
                    writer.WritePropertyName("@version");
                    writer.WriteValue(declaration.Version);
                }
                if (!string.IsNullOrEmpty(declaration.Encoding))
                {
                    writer.WritePropertyName("@encoding");
                    writer.WriteValue(declaration.Encoding);
                }
                if (!string.IsNullOrEmpty(declaration.Standalone))
                {
                    writer.WritePropertyName("@standalone");
                    writer.WriteValue(declaration.Standalone);
                }

                writer.WriteEndObject();
                break;

            default:
                throw new JsonSerializationException("Unexpected XmlNodeType when serializing nodes: " + node.NodeType);
            }
        }