【发布时间】:2021-04-13 16:00:26
【问题描述】:
使用 System.Text.Json 我可以使用序列化选项漂亮地打印 json。
var options = new JsonSerializerOptions{ WriteIndented = true };
jsonString = JsonSerializer.Serialize(typeToSerialize, options);
但是,我有字符串 JSON 并且不知道 concreate 类型。如何漂亮地打印 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();
}
}
【问题讨论】:
-
没有内置的 API 可以从
Utf8JsonReader复制到Utf8JsonWriter所以解析到JsonDocument并重新序列化看起来是要走的路。见How to pretty-print (format) System.Text.JsonElement to a string。
标签: .net-core .net-5 system.text.json asp.net5