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());
        }
Beispiel #2
0
 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);
            }
Beispiel #12
0
 internal ArrayWriter(JWriter writer, WriterState previousState)
 {
     _writer        = writer;
     _previousState = previousState;
     _done          = false;
 }