public void ValueFormatting() { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter jsonWriter = new JsonTextWriter(sw)) { jsonWriter.WriteStartArray(); jsonWriter.WriteValue('@'); jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'"); jsonWriter.WriteValue(true); jsonWriter.WriteValue(10); jsonWriter.WriteValue(10.99); jsonWriter.WriteValue(0.99); jsonWriter.WriteValue(0.000000000000000001d); jsonWriter.WriteValue(0.000000000000000001m); jsonWriter.WriteValue((string)null); jsonWriter.WriteValue((object)null); jsonWriter.WriteValue("This is a string."); jsonWriter.WriteNull(); jsonWriter.WriteUndefined(); jsonWriter.WriteEndArray(); } string expected = @"[""@"",""\r\n\t\f\b?{\\r\\n\""'"",true,10,10.99,0.99,1E-18,0.000000000000000001,null,null,""This is a string."",null,undefined]"; string result = sb.ToString(); Console.WriteLine("ValueFormatting"); Console.WriteLine(result); Assert.Equal(expected, result); }
public void Path() { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); string text = "Hello world."; byte[] data = Encoding.UTF8.GetBytes(text); using (JsonTextWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.Indented; writer.WriteStartArray(); Assert.Equal("", writer.Path); writer.WriteStartObject(); Assert.Equal("[0]", writer.Path); writer.WritePropertyName("Property1"); Assert.Equal("[0].Property1", writer.Path); writer.WriteStartArray(); Assert.Equal("[0].Property1", writer.Path); writer.WriteValue(1); Assert.Equal("[0].Property1[0]", writer.Path); writer.WriteStartArray(); Assert.Equal("[0].Property1[1]", writer.Path); writer.WriteStartArray(); Assert.Equal("[0].Property1[1][0]", writer.Path); writer.WriteStartArray(); Assert.Equal("[0].Property1[1][0][0]", writer.Path); writer.WriteEndObject(); Assert.Equal("[0]", writer.Path); writer.WriteStartObject(); Assert.Equal("[1]", writer.Path); writer.WritePropertyName("Property2"); Assert.Equal("[1].Property2", writer.Path); writer.WriteStartConstructor("Constructor1"); Assert.Equal("[1].Property2", writer.Path); writer.WriteNull(); Assert.Equal("[1].Property2[0]", writer.Path); writer.WriteStartArray(); Assert.Equal("[1].Property2[1]", writer.Path); writer.WriteValue(1); Assert.Equal("[1].Property2[1][0]", writer.Path); writer.WriteEnd(); Assert.Equal("[1].Property2[1]", writer.Path); writer.WriteEndObject(); Assert.Equal("[1]", writer.Path); writer.WriteEndArray(); Assert.Equal("", writer.Path); } StringAssert.Equal(@"[ { ""Property1"": [ 1, [ [ [] ] ] ] }, { ""Property2"": new Constructor1( null, [ 1 ] ) } ]", sb.ToString()); }
public void WriteReadWrite() { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter jsonWriter = new JsonTextWriter(sw) { Formatting = Formatting.Indented }) { jsonWriter.WriteStartArray(); jsonWriter.WriteValue(true); jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName("integer"); jsonWriter.WriteValue(99); jsonWriter.WritePropertyName("string"); jsonWriter.WriteValue("how now brown cow?"); jsonWriter.WritePropertyName("array"); jsonWriter.WriteStartArray(); for (int i = 0; i < 5; i++) { jsonWriter.WriteValue(i); } jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName("decimal"); jsonWriter.WriteValue(990.00990099m); jsonWriter.WriteEndObject(); jsonWriter.WriteValue(5); jsonWriter.WriteEndArray(); jsonWriter.WriteEndObject(); jsonWriter.WriteValue("This is a string."); jsonWriter.WriteNull(); jsonWriter.WriteNull(); jsonWriter.WriteEndArray(); } string json = sb.ToString(); JsonSerializer serializer = new JsonSerializer(); object jsonObject = serializer.Deserialize(new JsonTextReader(new StringReader(json))); sb = new StringBuilder(); sw = new StringWriter(sb); using (JsonWriter jsonWriter = new JsonTextWriter(sw) { Formatting = Formatting.Indented }) { serializer.Serialize(jsonWriter, jsonObject); } Assert.Equal(json, sb.ToString()); }