使用System.Text.Json,我可以使用序列化选项来漂亮地打印JSON。
然而,我有一个字符串JSON,但不知道具体的类型。我该如何漂亮地打印JSON字符串?
我的旧代码使用Newtonsoft,我可以在不进行序列化/反序列化的情况下完成这个操作。
var options = new JsonSerializerOptions{ WriteIndented = true };
jsonString = JsonSerializer.Serialize(typeToSerialize, options);
然而,我有一个字符串JSON,但不知道具体的类型。我该如何漂亮地打印JSON字符串?
我的旧代码使用Newtonsoft,我可以在不进行序列化/反序列化的情况下完成这个操作。
public static string JsonPrettify(this string json)
{
if (string.IsNullOrEmpty(json))
{
return json;
}
using (var stringReader = new StringReader(json))
using (var stringWriter = new StringWriter())
{
var jsonReader = new JsonTextReader(stringReader);
var jsonWriter = new JsonTextWriter(stringWriter) { Formatting = Formatting.Indented };
jsonWriter.WriteToken(jsonReader);
return stringWriter.ToString();
}
}
Utf8JsonReader
复制到Utf8JsonWriter
,所以解析为JsonDocument
并重新序列化似乎是可行的方法。请参见如何将 System.Text.JsonElement 美化打印(格式化)为字符串。 - dbc