NewtonSoftのJSONシリアライザーを使用する簡単な方法があり、それが大好きです(単純で、フォーマットされたJSONを返します)。ただし、オブジェクト内の文字列にあるUTF8文字(疑問符、つまり「?」として表示されます)を適切にシリアル化することはできないようです。
私が使用しているコードは次のとおりです。
string serialized = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { });