private static string GenerateOutput(Dictionary<string, object> result, int indent) { var stringWriter = new StringWriter(); var writer = new JsonTextWriter(stringWriter) { Formatting = Formatting.Indented }; writer.WriteStartObject(); foreach (var o in result) { writer.WritePropertyName(o.Key); var ravenJToken = o.Value as RavenJToken; if (ravenJToken != null) { ravenJToken.WriteTo(writer); continue; } var conflicted = o.Value as Conflicted; if (conflicted != null) { writer.WriteComment(">>>> conflict start"); writer.WriteStartArray(); foreach (var token in conflicted.Values) { token.WriteTo(writer); } writer.WriteEndArray(); writer.WriteComment("<<<< conflict end"); continue; } var arrayWithWarning = o.Value as ArrayWithWarning; if(arrayWithWarning != null) { writer.WriteComment(">>>> auto merged array start"); arrayWithWarning.MergedArray.WriteTo(writer); writer.WriteComment("<<<< auto merged array end"); continue; } var resolver = o.Value as ConflictsResolver; if(resolver != null) { using(var stringReader = new StringReader(resolver.Resolve(indent + 1))) { var first = true; string line ; while((line = stringReader.ReadLine()) != null) { if(first == false) { writer.WriteRaw(Environment.NewLine); for (var i = 0; i < indent; i++) { writer.WriteRaw(new string(writer.IndentChar, writer.Indentation)); } } if(first) writer.WriteRawValue(line); else writer.WriteRaw(line); first = false; } } continue; } throw new InvalidOperationException("Could not understand how to deal with: " + o.Value); } writer.WriteEndObject(); return stringWriter.GetStringBuilder().ToString(); }
private void WriteRawData(JsonTextWriter writer, String data, int indent) { var sb = new StringBuilder(); using (var stringReader = new StringReader(data)) { var first = true; string line; while ((line = stringReader.ReadLine()) != null) { if (first == false) { sb.AppendLine(); for (var i = 0; i < indent; i++) { sb.Append(writer.IndentChar, writer.Indentation); } } sb.Append(line); first = false; } } writer.WriteRawValue(sb.ToString()); }
public void WriteRawValue() { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter jsonWriter = new JsonTextWriter(sw)) { int i = 0; string rawJson = "[1,2]"; jsonWriter.WriteStartObject(); while (i < 3) { jsonWriter.WritePropertyName("d" + i); jsonWriter.WriteRawValue(rawJson); i++; } jsonWriter.WriteEndObject(); } Assert.AreEqual(@"{""d0"":[1,2],""d1"":[1,2],""d2"":[1,2]}", sb.ToString()); }