public void TestMessageMissingExtensions() { TestXmlMessage original = TestXmlMessage.CreateBuilder() .SetValid(true) .SetText("text") .SetExtension(UnittestExtrasXmltest.ExtensionText, " extension text value ! ") .SetExtension(UnittestExtrasXmltest.ExtensionMessage, new TestXmlExtension.Builder().SetNumber(42).Build()) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 100) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 101) .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 102) .SetExtension(UnittestExtrasXmltest.ExtensionEnum, EnumOptions.ONE) .Build(); TestXmlMessage message = original.ToBuilder() .ClearExtension(UnittestExtrasXmltest.ExtensionText) .ClearExtension(UnittestExtrasXmltest.ExtensionMessage) .ClearExtension(UnittestExtrasXmltest.ExtensionNumber) .ClearExtension(UnittestExtrasXmltest.ExtensionEnum) .Build(); JsonFormatWriter writer = JsonFormatWriter.CreateInstance(); writer.WriteMessage(original); Content = writer.ToString(); IMessageLite copy = JsonFormatReader.CreateInstance(Content) .Merge(message.CreateBuilderForType()).Build(); Assert.AreNotEqual(original, message); Assert.AreNotEqual(original, copy); Assert.AreEqual(message, copy); }
public void TestNestedMessageArray() { JsonFormatWriter writer = JsonFormatWriter.CreateInstance(); using (writer.StartArray()) { using (writer.StartArray()) { writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(1).AddTextlines("a").Build()); writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(2).AddTextlines("b").Build()); } using (writer.StartArray()) writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(3).AddTextlines("c").Build()); } string json = writer.ToString(); JsonFormatReader reader = JsonFormatReader.CreateInstance(json); TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder(); int ordinal = 0; foreach (JsonFormatReader r in reader.EnumerateArray()) { foreach (JsonFormatReader r2 in r.EnumerateArray()) { r2.Merge(builder); Assert.AreEqual(++ordinal, builder.Number); } } Assert.AreEqual(3, ordinal); Assert.AreEqual(3, builder.TextlinesCount); }
/// <summary> /// Serializes the message to JSON text. This is a trivial wrapper /// around Serialization.JsonFormatWriter.WriteMessage. /// </summary> public static string ToJson( #if !NOEXTENSIONS this #endif IMessageLite message) { JsonFormatWriter w = JsonFormatWriter.CreateInstance(); w.WriteMessage(message); return(w.ToString()); }