public void WriteVariant(string fieldName, Variant value)
{
bool isNull = (value.TypeInfo == null || value.TypeInfo.BuiltInType == BuiltInType.Null || value.Value == null);
if (UseReversibleEncoding && !isNull)
{
PushStructure(fieldName);
byte encoding = (byte)value.TypeInfo.BuiltInType;
if (value.TypeInfo.ValueRank >= 0)
{
encoding |= (byte)VariantArrayEncodingBits.Array;
}
WriteByte("Encoding", encoding);
fieldName = "Body";
}
if (!String.IsNullOrEmpty(fieldName))
{
if (m_commaRequired)
{
m_writer.Write(",");
}
m_writer.Write("\"");
m_writer.Write(fieldName);
m_writer.Write("\":");
}
WriteVariantContents(value.Value, value.TypeInfo);
if (UseReversibleEncoding && !isNull)
{
Matrix matrix = value.Value as Matrix;
if (matrix != null)
{
WriteInt32Array("Dimensions", matrix.Dimensions);
}
PopStructure();
}
}