Always try to write reflected object.

This commit is contained in:
2020-09-06 03:46:32 +02:00
parent 9d4c2c170d
commit 18f2fd0b7a

View File

@@ -141,7 +141,7 @@ namespace VAR.Json
textWriter.Write('"'); textWriter.Write('"');
} }
private void WriteValue(TextWriter textWriter, object obj, List<object> parentLevels, bool useReflection) private void WriteValue(TextWriter textWriter, object obj, List<object> parentLevels)
{ {
if (obj == null || obj is DBNull) if (obj == null || obj is DBNull)
{ {
@@ -187,17 +187,10 @@ namespace VAR.Json
WriteList(textWriter, obj, parentLevels); WriteList(textWriter, obj, parentLevels);
} }
else else
{
if (useReflection)
{ {
// Reflected object // Reflected object
WriteReflectedObject(textWriter, obj, parentLevels); WriteReflectedObject(textWriter, obj, parentLevels);
} }
else
{
WriteString(textWriter, Convert.ToString(obj));
}
}
} }
private void WriteList(TextWriter textWriter, object obj, List<object> parentLevels) private void WriteList(TextWriter textWriter, object obj, List<object> parentLevels)
@@ -242,7 +235,7 @@ namespace VAR.Json
} }
first = false; first = false;
parentLevels.Add(obj); parentLevels.Add(obj);
WriteValue(textWriter, childObj, parentLevels, true); WriteValue(textWriter, childObj, parentLevels);
parentLevels.Remove(obj); parentLevels.Remove(obj);
} }
if (!isLeaf || n > _config.IndentThresold) if (!isLeaf || n > _config.IndentThresold)
@@ -297,7 +290,7 @@ namespace VAR.Json
WriteString(textWriter, Convert.ToString(key)); WriteString(textWriter, Convert.ToString(key));
textWriter.Write(": "); textWriter.Write(": ");
parentLevels.Add(obj); parentLevels.Add(obj);
WriteValue(textWriter, value, parentLevels, true); WriteValue(textWriter, value, parentLevels);
parentLevels.Remove(obj); parentLevels.Remove(obj);
} }
if (!isLeaf || n > _config.IndentThresold) if (!isLeaf || n > _config.IndentThresold)
@@ -369,11 +362,11 @@ namespace VAR.Json
parentLevels.Add(obj); parentLevels.Add(obj);
if (value != obj && parentLevels.Contains(value) == false) if (value != obj && parentLevels.Contains(value) == false)
{ {
WriteValue(textWriter, value, parentLevels, false); WriteValue(textWriter, value, parentLevels);
} }
else else
{ {
WriteValue(textWriter, null, parentLevels, false); WriteValue(textWriter, null, parentLevels);
} }
parentLevels.Remove(obj); parentLevels.Remove(obj);
} }
@@ -394,14 +387,14 @@ namespace VAR.Json
{ {
textWriter = new StringWriter(); textWriter = new StringWriter();
} }
WriteValue(textWriter, obj, new List<object>(), true); WriteValue(textWriter, obj, new List<object>());
return textWriter; return textWriter;
} }
public string Write(object obj) public string Write(object obj)
{ {
StringWriter textWriter = new StringWriter(); StringWriter textWriter = new StringWriter();
WriteValue(textWriter, obj, new List<object>(), true); WriteValue(textWriter, obj, new List<object>());
return textWriter.ToString(); return textWriter.ToString();
} }