public static void ArrayAsRootObject() { const string ExpectedJson = @"[1,true,{""City"":""MyCity""},null,""foo""]"; const string ReversedExpectedJson = @"[""foo"",null,{""City"":""MyCity""},true,1]"; string[] expectedObjects = { @"""foo""", @"null", @"{""City"":""MyCity""}", @"true", @"1" }; var address = new Address(); address.Initialize(); var array = new object[] { 1, true, address, null, "foo" }; string json = JsonSerializer.Serialize(array); Assert.Equal(ExpectedJson, json); var dictionary = new Dictionary <string, string> { { "City", "MyCity" } }; var arrayWithDictionary = new object[] { 1, true, dictionary, null, "foo" }; json = JsonSerializer.Serialize(arrayWithDictionary); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(array); Assert.Equal(ExpectedJson, json); List <object> list = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(list); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(list); Assert.Equal(ExpectedJson, json); IEnumerable ienumerable = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(ienumerable); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(ienumerable); Assert.Equal(ExpectedJson, json); IList ilist = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(ilist); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(ilist); Assert.Equal(ExpectedJson, json); ICollection icollection = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(icollection); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(icollection); Assert.Equal(ExpectedJson, json); IEnumerable <object> genericIEnumerable = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(genericIEnumerable); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(genericIEnumerable); Assert.Equal(ExpectedJson, json); IList <object> genericIList = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(genericIList); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(genericIList); Assert.Equal(ExpectedJson, json); ICollection <object> genericICollection = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(genericICollection); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(genericICollection); Assert.Equal(ExpectedJson, json); IReadOnlyCollection <object> genericIReadOnlyCollection = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(genericIReadOnlyCollection); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(genericIReadOnlyCollection); Assert.Equal(ExpectedJson, json); IReadOnlyList <object> genericIReadonlyList = new List <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(genericIReadonlyList); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(genericIReadonlyList); Assert.Equal(ExpectedJson, json); ISet <object> iset = new HashSet <object> { 1, true, address, null, "foo" }; json = JsonSerializer.Serialize(iset); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(iset); Assert.Equal(ExpectedJson, json); Stack <object> stack = new Stack <object>(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(stack); Assert.Equal(ReversedExpectedJson, json); json = JsonSerializer.Serialize <object>(stack); Assert.Equal(ReversedExpectedJson, json); Queue <object> queue = new Queue <object>(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(queue); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(queue); Assert.Equal(ExpectedJson, json); HashSet <object> hashset = new HashSet <object>(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(hashset); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(hashset); Assert.Equal(ExpectedJson, json); LinkedList <object> linkedlist = new LinkedList <object>(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(linkedlist); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(linkedlist); Assert.Equal(ExpectedJson, json); ImmutableArray <object> immutablearray = ImmutableArray.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(immutablearray); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(immutablearray); Assert.Equal(ExpectedJson, json); IImmutableList <object> iimmutablelist = ImmutableList.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(iimmutablelist); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(iimmutablelist); Assert.Equal(ExpectedJson, json); IImmutableStack <object> iimmutablestack = ImmutableStack.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(iimmutablestack); Assert.Equal(ReversedExpectedJson, json); json = JsonSerializer.Serialize <object>(iimmutablestack); Assert.Equal(ReversedExpectedJson, json); IImmutableQueue <object> iimmutablequeue = ImmutableQueue.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(iimmutablequeue); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(iimmutablequeue); Assert.Equal(ExpectedJson, json); IImmutableSet <object> iimmutableset = ImmutableHashSet.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(iimmutableset); foreach (string obj in expectedObjects) { Assert.Contains(obj, json); } json = JsonSerializer.Serialize <object>(iimmutableset); foreach (string obj in expectedObjects) { Assert.Contains(obj, json); } ImmutableHashSet <object> immutablehashset = ImmutableHashSet.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(immutablehashset); foreach (string obj in expectedObjects) { Assert.Contains(obj, json); } json = JsonSerializer.Serialize <object>(immutablehashset); foreach (string obj in expectedObjects) { Assert.Contains(obj, json); } ImmutableList <object> immutablelist = ImmutableList.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(immutablelist); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(immutablelist); Assert.Equal(ExpectedJson, json); ImmutableStack <object> immutablestack = ImmutableStack.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(immutablestack); Assert.Equal(ReversedExpectedJson, json); json = JsonSerializer.Serialize <object>(immutablestack); Assert.Equal(ReversedExpectedJson, json); ImmutableQueue <object> immutablequeue = ImmutableQueue.CreateRange(new List <object> { 1, true, address, null, "foo" }); json = JsonSerializer.Serialize(immutablequeue); Assert.Equal(ExpectedJson, json); json = JsonSerializer.Serialize <object>(immutablequeue); Assert.Equal(ExpectedJson, json); }