Example #1
0
 public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
 {
     if (value == null)
     {
         writer.WriteNull();
         return;
     }
     try
     {
         var type = value.GetType();
         if (typeof(Guid) == type)
         {
             var item = (Guid)value;
             writer.WriteValue($"{item:N}");
             writer.Flush();
         }
         else if (typeof(Guid?) == type)
         {
             var item = (Guid?)value;
             writer.WriteValue($"{item.Value:N}");
             writer.Flush();
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
 }
Example #2
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            DateTime data = Convert.ToDateTime(value);

            writer.WriteValue(data.ToString("dd/MM/yyyy"));
            writer.Flush();
        }
Example #3
0
        private static void WriterSystemTextJsonBasicUtf8(bool formatted, ArrayFormatterWrapper output, ReadOnlySpan <int> data)
        {
            var json = new JsonWriter <ArrayFormatterWrapper>(output, formatted);

            json.WriteObjectStart();
            json.WriteAttribute("age", 42);
            json.WriteAttribute("first", "John");
            json.WriteAttribute("last", "Smith");
            json.WriteArrayStart("phoneNumbers");
            json.WriteValue("425-000-1212");
            json.WriteValue("425-000-1213");
            json.WriteArrayEnd();
            json.WriteObjectStart("address");
            json.WriteAttribute("street", "1 Microsoft Way");
            json.WriteAttribute("city", "Redmond");
            json.WriteAttribute("zip", 98052);
            json.WriteObjectEnd();

            json.WriteArrayStart("ExtraArray");
            for (var i = 0; i < data.Length; i++)
            {
                json.WriteValue(data[i]);
            }
            json.WriteArrayEnd();

            json.WriteObjectEnd();
            json.Flush();
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var item = (DateTime)value;

            writer.WriteValue(ConvertToJsTime(item));
            writer.Flush();
        }
Example #5
0
        internal void SaveTo(JsonWriter writer, JsonSerializer serializer, SerializationFormattingPolicy formattingPolicy = SerializationFormattingPolicy.None)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }

            if (serializer == null)
            {
                throw new ArgumentNullException("serializer");
            }

            writer.Formatting = formattingPolicy == SerializationFormattingPolicy.Indented
                ? Newtonsoft.Json.Formatting.Indented
                : Newtonsoft.Json.Formatting.None;

            this.OnSave();

            if (typeof(DocumentMetadata).IsAssignableFrom(this.GetType()) && !this.GetType().Equals(typeof(DocumentMetadata)))
            {
                serializer.Serialize(writer, this);
            }
            else
            {
                if (JsonSerializable.JustPocoSerialization)
                {
                    this.propertyBag.WriteTo(writer);
                }
                else
                {
                    serializer.Serialize(writer, this.propertyBag);
                }
            }
            writer.Flush();
        }
Example #6
0
            public override void WriteJson(JsonWriter writer,
                                           object value, JsonSerializer serializer)
            {
                var rows = (List <CrnStatisticsModel.Data>)value;

                //writer.WriteStartObject();
                // writer.WritePropertyName("DATA");
                writer.WriteStartArray();

                foreach (var row in rows)
                {
                    writer.WriteStartArray();
                    writer.WriteValue(row.InstructorSemAverage);
                    writer.WriteValue(row.InstructorSemSTDev);
                    writer.WriteValue(row.DepartmentSemAverage);
                    writer.WriteValue(row.DepartmentSemSTDev);
                    writer.WriteValue(row.ClassScore);
                    writer.WriteValue(row.ClassSTDev);
                    writer.WriteValue(row.DecTile);
                    writer.WriteValue(row.DepClassFiveYearAverage);
                    writer.WriteValue(row.DepClassFiveYearSTDev);
                    writer.WriteValue(row.InstructClassFiveYearAverage);
                    writer.WriteValue(row.InstructClassFiveYearSTDev);

                    writer.WriteEndArray();
                }

                writer.Flush();
            }
            public override void WriteJson(JsonWriter writer,
                                           object value, JsonSerializer serializer)
            {
                var rows = (List <EssayAnswersModel.Data>)value;

                //writer.WriteStartObject();
                // writer.WritePropertyName("DATA");
                writer.WriteStartArray();

                foreach (var row in rows)
                {
                    writer.WriteStartArray();
                    writer.WriteValue(row.id);
                    writer.WriteValue(row.crn);
                    writer.WriteValue(row.subjectCode);
                    writer.WriteValue(row.courseNum);
                    writer.WriteValue(row.semester);
                    writer.WriteValue(row.block);
                    writer.WriteValue(row.questionID);
                    writer.WriteValue(row.questionResponse);
                    writer.WriteValue(row.question);
                    writer.WriteValue(row.answer);
                    writer.WriteValue(row.student);

                    writer.WriteEndArray();
                }

                writer.Flush();
            }
Example #8
0
 public bool IsIosExceedLength()
 {
     if (this.notification != null)
     {
         if (this.notification.IosNotification != null)
         {
             string s = JsonConvert.SerializeObject((object)this.notification.IosNotification, this.jSetting);
             if (s != null)
             {
                 return(Encoding.UTF8.GetBytes(s).Length > 2048);
             }
         }
         else if (this.notification.alert != null)
         {
             string s;
             using (StringWriter stringWriter = new StringWriter())
             {
                 JsonWriter jsonWriter = (JsonWriter) new JsonTextWriter((TextWriter)stringWriter);
                 jsonWriter.WriteValue(this.notification.alert);
                 jsonWriter.Flush();
                 s = stringWriter.GetStringBuilder().ToString();
             }
             return(Encoding.UTF8.GetBytes(s).Length > 2048);
         }
     }
     return(false);
 }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var item = value as Boolean[];

            writer.WriteValue(ConvertToJsBoolean(item));
            writer.Flush();
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var item = (LogConstants.Type)value;

            writer.WriteValue(item.ToString());
            writer.Flush();
        }
Example #11
0
            public override void WriteJson(JsonWriter writer,
                                           object value, JsonSerializer serializer)
            {
                var rows = (List <ClassesTaughtModel.Data>)value;

                //writer.WriteStartObject();
                // writer.WritePropertyName("DATA");
                writer.WriteStartArray();

                foreach (var row in rows)
                {
                    writer.WriteStartArray();
                    writer.WriteValue(row.bannercrn);
                    writer.WriteValue(row.semester);
                    writer.WriteValue(row.year);
                    writer.WriteValue(row.subcode);
                    writer.WriteValue(row.coursenum);
                    writer.WriteValue(row.score);
                    writer.WriteValue(row.responses);
                    writer.WriteValue(row.students);
                    writer.WriteValue(row.stddev);
                    writer.WriteValue(row.testname);

                    writer.WriteEndArray();
                }

                writer.Flush();
            }
Example #12
0
        static void WriteResponseForPostJson(HttpRequest request, ReadOnlySequence <byte> body, TcpConnectionFormatter response)
        {
            // read request json
            int requestedCount;

            // TODO: this should not convert to span
            var dom = JsonObject.Parse(body.First.Span);

            try
            {
                requestedCount = (int)dom["Count"];
            }
            finally
            {
                dom.Dispose();
            }

            WriteCommonHeaders(ref response, Http.Version.Http11, 200, "OK");
            response.Append("Content-Type : application/json; charset=UTF-8\r\n");
            response.AppendEoh();

            // write response JSON
            var jsonWriter = new JsonWriter <TcpConnectionFormatter>(response, prettyPrint: false);

            jsonWriter.WriteObjectStart();
            jsonWriter.WriteArrayStart("values");
            for (int i = 0; i < requestedCount; i++)
            {
                jsonWriter.WriteValue("hello!");
            }
            jsonWriter.WriteArrayEnd();
            jsonWriter.WriteObjectEnd();
            jsonWriter.Flush();
        }
Example #13
0
        /// <summary>The write json.</summary>
        /// <param name="writer">The writer.</param>
        /// <param name="value">The value.</param>
        /// <param name="serializer">The serializer.</param>
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            if (writer == null)
            {
                return;
            }

            var row = value as OrderRow;

            if (row == null)
            {
                return;
            }

            writer.WriteStartArray();
            writer.WriteRawValue(row.Price.ToInvariantString(2));
            writer.WriteRawValue(row.VolRemaining.ToInvariantString());
            writer.WriteRawValue(row.Range.ToInvariantString());
            writer.WriteRawValue(row.OrderId.ToInvariantString());
            writer.WriteRawValue(row.VolEntered.ToInvariantString());
            writer.WriteRawValue(row.MinVolume.ToInvariantString());
            writer.WriteRawValue(row.Bid.ToInvariantString());
            writer.WriteValue(row.IssueDate);
            writer.WriteRawValue(row.Duration.ToInvariantString());
            writer.WriteRawValue(row.StationId.ToInvariantString());
            writer.WriteRawValue(row.SolarSystemId.ToInvariantString());
            writer.WriteEndArray();

            writer.Flush();
        }
Example #14
0
        /// <summary>Serializes an error in JSON format.</summary>
        /// <param name='writer'>Writer to which error should be serialized.</param>
        private void SerializeJsonError(JsonWriter writer)
        {
            Debug.Assert(writer != null, "writer != null");
            writer.StartObjectScope();  // Wrapper for error.
            writer.WriteName(XmlConstants.JsonError);

            string errorCode, message, messageLang;
            DataServiceException dataException = ExtractErrorValues(this.exceptionArgs.Exception, out errorCode, out message, out messageLang);

            writer.StartObjectScope();

            writer.WriteName(XmlConstants.JsonErrorCode);
            writer.WriteValue(errorCode);

            writer.WriteName(XmlConstants.JsonErrorMessage);
            writer.StartObjectScope();
            writer.WriteName(XmlConstants.XmlLangAttributeName);
            writer.WriteValue(messageLang);
            writer.WriteName(XmlConstants.JsonErrorValue);
            writer.WriteValue(message);
            writer.EndScope();  // </message>

            if (this.exceptionArgs.UseVerboseErrors)
            {
                Exception exception = (dataException == null) ? this.exceptionArgs.Exception : dataException.InnerException;
                SerializeJsonException(writer, exception);
            }

            writer.EndScope();  // </error>
            writer.EndScope();  // </error wrapper>
            writer.Flush();
        }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var item = (KeyValuePair <string, int>)value;

        writer.WriteValue(item.Value);
        writer.Flush();
    }
Example #16
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var item = (Dep)value;

            writer.WriteValue(ToJsonValueString(item));
            writer.Flush();
        }
Example #17
0
 private void WriteComplexContent(JsonWriter writer, string text)
 {
     if (string.IsNullOrEmpty(text))
     {
         writer.WriteNull();
         return;
     }
     try
     {
         JsonTextReader reader = CreateReader(text,
                                              ObjectUtil.ReadSettings).Convert <JsonTextReader>();
         using (reader)
         {
             while (reader.Read())
             {
                 writer.WriteToken(reader);
             }
             writer.Flush();
         }
     }
     catch
     {
         writer.WriteNull();
     }
 }
Example #18
0
        public static string ToJsonString(this JToken token)
        {
            if (token == null)
            {
                throw new ArgumentNullException("token");
            }

            // The following code is different from token.ToString(), which special-cases null to return "" instead of
            // "null".
            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            try
            {
                using (JsonWriter jsonWriter = JsonSerialization.CreateJsonTextWriter(stringWriter))
                {
                    token.WriteTo(jsonWriter);
                    jsonWriter.Flush();
                    stringWriter.Flush();

                    string result = stringWriter.ToString();
                    stringWriter = null;

                    return(result);
                }
            }
            finally
            {
                if (stringWriter != null)
                {
                    stringWriter.Dispose();
                }
            }
        }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var item = (IValueObject)value;

        writer.WriteValue(item.ToString());
        writer.Flush();
    }
Example #20
0
        /// <summary>
        ///     Deserialise a <typeparamref name="TModel"/> from YAML.
        /// </summary>
        /// <typeparam name="TModel">
        ///     The type of model to deserialise.
        /// </typeparam>
        /// <param name="yaml">
        ///     A <see cref="TextReader"/> containing the YAML.
        /// </param>
        /// <returns>
        ///     The deserialised <typeparamref name="TModel"/>.
        /// </returns>
        /// <remarks>
        ///     Delegates the actual deserialisation to JSON.NET, after converting the YAML to JSON.
        ///
        ///     Not particularly efficient, but safe and reliable.
        /// </remarks>
        public static TModel Deserialize <TModel>(TextReader yaml)
        {
            if (yaml == null)
            {
                throw new ArgumentNullException(nameof(yaml));
            }

            object deserialisedYaml = YamlDeserialiser.Deserialize(yaml);

            using (MemoryStream buffer = new MemoryStream())
            {
                using (JsonWriter jsonWriter = CreateJsonWriter(buffer))
                {
                    JsonSerializer.Serialize(jsonWriter, deserialisedYaml);
                    jsonWriter.Flush();
                }

                buffer.Seek(0, SeekOrigin.Begin);

                using (JsonReader jsonReader = CreateJsonReader(buffer))
                {
                    return(JsonSerializer.Deserialize <TModel>(jsonReader));
                }
            }
        }
Example #21
0
        protected override void Close(PipelineContext ctx)
        {
            logCloseAndCheckForNormalClose(ctx);
            if (jsonWtr != null)
            {
                if (Array)
                {
                    jsonWtr.WriteEndArray();
                }
                if (Root != null)
                {
                    jsonWtr.WriteEndObject();
                }

                jsonWtr.Flush();
                jsonWtr = null;
            }
            if (wtr != null)
            {
                wtr.Flush();
                wtr = null;
            }
            if (fs != null)
            {
                fs.Close();
                fs = null;
            }
        }
Example #22
0
        /// <summary>
        /// Called during serialization to write an object of the specified <paramref name="type"/>
        /// to the specified <paramref name="writeStream"/>.
        /// </summary>
        /// <remarks>
        /// Public for delegating wrappers of this class.  Expected to be called only from
        /// <see cref="WriteToStreamAsync"/>.
        /// </remarks>
        /// <param name="type">The <see cref="Type"/> of object to write.</param>
        /// <param name="value">The object to write.</param>
        /// <param name="writeStream">The <see cref="Stream"/> to which to write.</param>
        /// <param name="effectiveEncoding">The <see cref="Encoding"/> to use when writing.</param>
        public virtual void WriteToStream(Type type, object value, Stream writeStream, Encoding effectiveEncoding)
        {
            if (type == null)
            {
                throw Error.ArgumentNull("type");
            }

            if (writeStream == null)
            {
                throw Error.ArgumentNull("writeStream");
            }

            if (effectiveEncoding == null)
            {
                throw Error.ArgumentNull("effectiveEncoding");
            }

            using (JsonWriter jsonWriter = CreateJsonWriterInternal(type, writeStream, effectiveEncoding))
            {
                jsonWriter.CloseOutput = false;

                JsonSerializer jsonSerializer = CreateJsonSerializerInternal();
                jsonSerializer.Serialize(jsonWriter, value);
                jsonWriter.Flush();
            }
        }
Example #23
0
        public new void AsJson(JsonWriter writer, string baseUrl)
        {
            writer.WriteStartObject();
            base.AsJson(writer, baseUrl);

            writer.WritePropertyName("title");
            writer.WriteValue(Title);
            writer.WritePropertyName("startDate");
            writer.WriteValue(StartDate.ToString("yyyy-MM-dd"));
            writer.WritePropertyName("endDate");
            writer.WriteValue(EndDate.ToString("yyyy-MM-dd"));
            writer.WritePropertyName("type");
            writer.WriteValue(Enum.GetName(typeof(Vocabulary.SessionType), Type));

            if (ParentAcademicSession != null)
            {
                writer.WritePropertyName("parent");
                ParentAcademicSession.AsJsonReference(writer, baseUrl);
            }

            if (Children != null && Children.Count > 0)
            {
                writer.WritePropertyName("children");
                writer.WriteStartArray();
                Children.ForEach(child => child.AsJsonReference(writer, baseUrl));
                writer.WriteEndArray();
            }

            writer.WritePropertyName("schoolYear");
            writer.WriteValue(SchoolYear);

            writer.WriteEndObject();
            writer.Flush();
        }
Example #24
0
        public byte[] Flush()
        {
            jsonWriter.WriteStartObject();
            jsonWriter.WritePropertyName("timestamp");
            jsonWriter.WriteValue(System.DateTime.Now.Ticks);
            jsonWriter.WritePropertyName("payloads");
            jsonWriter.WriteStartArray();

            foreach (string payload in payloads)
            {
                jsonWriter.WriteValue(payload);
            }

            jsonWriter.WriteEndArray();
            jsonWriter.WriteEndObject();

            string jsonString = stringBuilder.ToString();

            jsonWriter.Flush();
            stringBuilder.Clear();
            payloads.Clear();

            byte[] stringBytes = Encoding.ASCII.GetBytes(jsonString);

            return(stringBytes);
        }
Example #25
0
        private void ToJson(Stream stream)
        {
            using (JsonWriter jsonWriter = new JsonWriter(stream))
            {
                jsonWriter.WriteObject();

                jsonWriter.WriteMember("Items");
                jsonWriter.WriteArray();

                jsonWriter.WriteObject();
                LinkExtensions.Serialise(GetLinks(), jsonWriter);

                jsonWriter.WriteMember("TimeTriggered");
                jsonWriter.WriteValue(_WebhookNotification.TimeTriggered);

                jsonWriter.WriteMember("SubscriptionType");
                jsonWriter.WriteValue(_WebhookNotification.SubscriptionType);

                if (_WebhookNotification.ObjectDefinition != null)
                {
                    jsonWriter.WriteMember("Value");
                    ObjectInstance instance = new ObjectInstance(_WebhookNotification.ObjectDefinition, _WebhookNotification.ChangedObject);
                    instance.Links = new List <Link>();
                    instance.Serialise(jsonWriter);
                }

                jsonWriter.WriteEndObject();

                jsonWriter.WriteEndArray();
                jsonWriter.WriteEndObject();
                jsonWriter.Flush();
            }
            stream.Position = 0;
        }
Example #26
0
        public new void AsJson(JsonWriter writer, string baseUrl)
        {
            writer.WriteStartObject();
            base.AsJson(writer, baseUrl);

            writer.WritePropertyName("name");
            writer.WriteValue(Name);

            writer.WritePropertyName("type");
            writer.WriteValue(Enum.GetName(typeof(Vocabulary.OrgType), Type));

            if (!String.IsNullOrEmpty(Identifier))
            {
                writer.WritePropertyName("identifier");
                writer.WriteValue(Identifier);
            }

            if (Parent != null)
            {
                writer.WritePropertyName("parent");
                Parent.AsJsonReference(writer, baseUrl);
            }

            if (Children != null && Children.Count > 0)
            {
                writer.WritePropertyName("children");
                writer.WriteStartArray();
                Children.ForEach(child => child.AsJsonReference(writer, baseUrl));
                writer.WriteEndArray();
            }

            writer.WriteEndObject();
            writer.Flush();
        }
Example #27
0
        /// <summary>
        ///     Serialise a model to YAML.
        /// </summary>
        /// <param name="model">
        ///     The model to serialise.
        /// </param>
        /// <param name="writer">
        ///     A <see cref="TextWriter"/> that will receive the serialised YAML.
        /// </param>
        /// <remarks>
        ///     Delegates the actual deserialisation to JSON.NET, before converting the JSON to YAML.
        ///
        ///     Not particularly efficient, but safe and reliable.
        /// </remarks>
        public static void Serialize(object model, TextWriter writer)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            object serializableModel;

            using (MemoryStream buffer = new MemoryStream())
            {
                using (JsonWriter jsonWriter = CreateJsonWriter(buffer))
                {
                    JsonSerializer.Serialize(jsonWriter, model);
                    jsonWriter.Flush();
                }

                buffer.Seek(0, SeekOrigin.Begin);

                using (TextReader yamlReader = CreateTextReader(buffer))
                {
                    serializableModel = YamlDeserialiser.Deserialize(yamlReader);
                }
            }

            YamlSerialiser.Serialize(writer, serializableModel);
        }
Example #28
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var valueResult = value.ToString().Replace(".", ",");

            writer.WriteValue(valueResult);
            writer.Flush();
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var customTerminalConverter = new TerminalActivityTemplateConverter();

            var item = (ActivityTemplateDTO)value;

            writer.WriteStartObject();
            writer.WritePropertyName("id");
            writer.WriteValue(item.Id.ToString());
            writer.WritePropertyName("name");
            writer.WriteValue(item.Name);
            writer.WritePropertyName("version");
            writer.WriteValue(item.Version);
            writer.WritePropertyName("label");
            writer.WriteValue(item.Label);
            writer.WritePropertyName("terminal");
            writer.WriteRawValue(JsonConvert.SerializeObject(item.Terminal, customTerminalConverter));
            writer.WritePropertyName("tags");
            writer.WriteValue(item.Tags);
            writer.WritePropertyName("type");
            writer.WriteValue(item.Type.ToString());
            writer.WritePropertyName("minPaneWidth");
            writer.WriteValue(item.MinPaneWidth);
            writer.WritePropertyName("needsAuthentication");
            writer.WriteValue(item.NeedsAuthentication);
            writer.WriteEndObject();
            writer.Flush();
        }
Example #30
0
        public static string FromHashtableQueue(Queue <Hashtable> queue)
        {
            StringWriter textWriter = new StringWriter();
            JsonWriter   jsonWriter = new JsonWriter(textWriter);

            jsonWriter.WriteStartArray();
            JsonSerializer serializer = new JsonSerializer();
            UUIDConverter  UUID       = new UUIDConverter();

            serializer.Converters.Add(UUID);
            while (queue.Count > 0)
            {
                try
                {
                    Hashtable hashtable = queue.Dequeue();
                    serializer.Serialize(jsonWriter, hashtable);
                }
                catch (Exception e)
                {
                    AjaxLife.Debug("MakeJson.FromHashTable", e.Message);
                }
            }
            jsonWriter.WriteEndArray();
            jsonWriter.Flush();
            string text = textWriter.ToString();

            jsonWriter.Close();
            textWriter.Dispose();
            return(text);
        }
        private void ToJson(Stream stream)
        {
            using (JsonWriter jsonWriter = new JsonWriter(stream))
            {
                jsonWriter.WriteObject();

                jsonWriter.WriteMember("Items");
                jsonWriter.WriteArray();

                jsonWriter.WriteObject();
                LinkExtensions.Serialise(GetLinks(), jsonWriter);

                jsonWriter.WriteMember("TimeTriggered");
                jsonWriter.WriteValue(_WebhookNotification.TimeTriggered);

                jsonWriter.WriteMember("SubscriptionType");
                jsonWriter.WriteValue(_WebhookNotification.SubscriptionType);

                if (_WebhookNotification.ObjectDefinition != null)
                {
                    jsonWriter.WriteMember("Value");
                    ObjectInstance instance = new ObjectInstance(_WebhookNotification.ObjectDefinition, _WebhookNotification.ChangedObject);
                    instance.Links = new List<Link>();
                    instance.Serialise(jsonWriter);
                }

                jsonWriter.WriteEndObject();

                jsonWriter.WriteEndArray();
                jsonWriter.WriteEndObject();
                jsonWriter.Flush();
            }
            stream.Position = 0;
        }
Example #32
0
 public void ToJson(Stream stream)
 {
     JsonWriter writer = new JsonWriter(stream);
     Serialise(writer);
     writer.Flush();
     stream.Position = 0;
 }
Example #33
0
        public void CanWriteComplexObject()
        {
            var sb = new StringBuilder();

            using (var stringWriter = new StringWriter(sb))
            {
                var writer = new JsonWriter(stringWriter, new JsonSerializeOperationInfo());

                writer.WriteOpenObject();

                writer.WriteValue("foo");

                writer.WriteNameValueSeparator();

                writer.WriteValue("bar");

                writer.WriteItemSeparator();

                writer.WriteValue("baz");

                writer.WriteNameValueSeparator();

                writer.WriteOpenArray();

                writer.WriteValue(1);
                writer.WriteItemSeparator();
                writer.WriteValue(2);
                writer.WriteItemSeparator();
                writer.WriteValue(3);

                writer.WriteCloseArray();

                writer.WriteCloseObject();

                writer.Flush();
            }

            var s = sb.ToString();

            Assert.That(s, Is.EqualTo(@"{""foo"":""bar"",""baz"":[1,2,3]}"));
        }