Change:
public override string ToString() { var val = string.Format("\"{0}\" : { {1} }", arrayName, fieldList); return val; }
on:
public override string ToString() { var val = string.Format("\"{0}\" : {{ {1} }}", arrayName, fieldList); return val; }
The way escaped braces are interpreted can lead to unexpected results. For example, consider the format item "{{{0:D}}}", which is intended to display an opening brace, a numeric value formatted as a decimal number, and a closing brace. However, the format item is actually interpreted in the following manner:
The first two opening braces ("{{") are escaped and yield one opening brace.
The next three characters ("{0:") are interpreted as the start of a format item.
The next character ("D") would be interpreted as the Decimal standard numeric format specifier, but the next two escaped braces ("}}") yield a single brace. Because the resulting string ("D}") is not a standard numeric format specifier, the resulting string is interpreted as a custom format string that means display the literal string "D}".
The last brace ("}") is interpreted as the end of the format item.
The final result that is displayed is the literal string, "{D}". The numeric value that was to be formatted is not displayed.