gpt4 book ai didi

.net-core - 如何将System.Text.JsonElement漂亮地打印(格式化)为字符串

转载 作者:行者123 更新时间:2023-12-03 16:11:18 26 4
gpt4 key购买 nike

用于将现有JsonElement格式化为格式化的JSON字符串的API在哪里。 ToString() API不提供任何格式选项。

退回使用Newtonsoft很烦人

Newtonsoft.Json.Linq.JValue
.Parse(myJsonElement.GetRawText())
.ToString(Newtonsoft.Json.Formatting.Indented)

最佳答案

您可以使用 JsonElement 重新序列化JsonSerializer并设置 JsonSerializerOptions.WriteIndented = true ,例如在扩展方法中:

public static partial class JsonExtensions
{
public static string ToString(this JsonElement element, bool indent)
=> element.ValueKind == JsonValueKind.Undefined ? "" : JsonSerializer.Serialize(element, new JsonSerializerOptions { WriteIndented = indent } );
}

然后执行:

var indentedJson = myJsonElement.ToString(true)

笔记:
  • 检查JsonValueKind.Undefined是为了避免使用默认(未初始化)JsonElement结构的异常; JsonElement.ToString() 不会抛出默认的JsonElement,因此格式化的版本也不会抛出该错误。
  • 如其他答案所示,在设置 Utf8JsonWriter 的同时使用JsonWriterOptions.Indented书写也可以。

  • 演示 fiddle here

    关于.net-core - 如何将System.Text.JsonElement漂亮地打印(格式化)为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61598778/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com