public void WritingToJWriterIsSameAsWritingToArrayWriter() { Action <IValueWriter> writeValues = w => { w.Null(); w.Bool(true); w.Int(1); w.String("x"); var arr = w.Array(); arr.End(); var obj = w.Object(); obj.End(); }; Action <string> verify = s => Assert.Equal(@"[null,true,1,""x"",[],{}]", s); var w1 = JWriter.New(); var arr1 = w1.Array(); writeValues(arr1); arr1.End(); verify(w1.GetString()); var w2 = JWriter.New(); var arr2 = w2.Array(); writeValues(w2); arr2.End(); verify(w2.GetString()); }
internal ObjectWriter(JWriter writer, WriterState previousState) { _writer = writer; _previousState = previousState; _hasItems = false; _done = false; }
/// <summary> /// Uses the specified converter to create a JSON representation as a string. /// </summary> /// <param name="instance">an instance of some type</param> /// <param name="converter">a converter for that type</param> /// <returns>the serialized JSON data as a string</returns> public static string SerializeObject(object instance, IJsonStreamConverter converter) { var writer = JWriter.New(); SerializeObjectToJWriter(instance, writer, converter); return(writer.GetString()); }
public void MaybeName() { var w = JWriter.New(); var obj = w.Object(); obj.MaybeName("a", true).Bool(true); obj.MaybeName("b", false).Null(); obj.MaybeName("b", false).Bool(true); obj.MaybeName("b", false).BoolOrNull(true); obj.MaybeName("b", false).BoolOrNull(null); obj.MaybeName("b", false).Int(1); obj.MaybeName("b", false).IntOrNull(1); obj.MaybeName("b", false).IntOrNull(null); obj.MaybeName("b", false).Long(1); obj.MaybeName("b", false).LongOrNull(1); obj.MaybeName("b", false).LongOrNull(null); obj.MaybeName("b", false).Double(1); obj.MaybeName("b", false).DoubleOrNull(1); obj.MaybeName("b", false).DoubleOrNull(null); obj.MaybeName("b", false).String("x"); obj.MaybeName("b", false).String(null); obj.MaybeName("b", false).Array(); obj.MaybeName("b", false).Object(); obj.End(); var expected = @"{""a"":true}"; Assert.Equal(expected, w.GetString()); }
public void AutoClose() { var w = JWriter.New(); using (var arr = w.Array()) { arr.Int(1); arr.Int(2); } Assert.Equal("[1,2]", w.GetString()); }
public void AutoClose() { var w = JWriter.New(); using (var obj = w.Object()) { obj.Name("a").Int(1); obj.Name("b").Int(2); } Assert.Equal(@"{""a"":1,""b"":2}", w.GetString()); }
public void GetUtf8ReadOnlyMemory() { var stringValue = "enchanté 😀"; var writer = JWriter.New(); writer.String(stringValue); var expected = "\"" + PlatformBehavior.GetExpectedStringEncoding(stringValue) + "\""; var memory = writer.GetUTF8ReadOnlyMemory(); Assert.Equal(Encoding.UTF8.GetBytes(expected), memory.ToArray()); }
/// <summary> /// Same as <see cref="SerializeObject(object)"/>, but returns the JSON output /// as a byte array using UTF8 encoding. /// </summary> /// <param name="instance">an instance of some type</param> /// <returns>the serialized JSON data as a byte array</returns> /// <exception cref="ArgumentException">if the type does not have a /// <c>[JsonStreamConverter]</c> attribute</exception> /// <seealso cref="JsonStreamConverterAttribute"/> /// <seealso cref="SerializeObject(object)"/> public static byte[] SerializeObjectToUtf8Bytes(object instance) { var writer = JWriter.New(); if (instance is null) { writer.Null(); } else { SerializeObjectToJWriter(instance, writer, JsonStreamConverterAttribute.ForTargetType(instance.GetType()).Converter); } return(writer.GetUtf8Bytes()); }
public void TestSuite(TestCase t) { var writer = JWriter.New(); foreach (var action in t.Actions) { action(writer); } var output = writer.GetString(); var pattern = "\\w*" + string.Join("\\w*", t.Encoding.Select(Regex.Escape)) + "\\w*"; Assert.Matches(pattern, output); }
public void GetStringOrUtf8Bytes() { var stringValue = "enchanté 😀"; var writer = JWriter.New(); writer.String(stringValue); var expected = "\"" + PlatformBehavior.GetExpectedStringEncoding(stringValue) + "\""; Assert.Equal(expected, writer.GetString()); var bytes = writer.GetUtf8Bytes(); Assert.Equal(Encoding.UTF8.GetBytes(expected), bytes); var stream = writer.GetUtf8Stream(); var streamReader = new StreamReader(stream, Encoding.UTF8); Assert.Equal(expected, streamReader.ReadToEnd()); }
public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) { var writerWrapper = JWriter.NewWithUtf8JsonWriter(writer); _jsonStreamConverter.WriteJson(value, writerWrapper); }
internal ArrayWriter(JWriter writer, WriterState previousState) { _writer = writer; _previousState = previousState; _done = false; }