C# JsonElement 转字符串不带格式

C# JsonElement to string without formatting

我需要将 JsonElement 转换为字符串,但没有任何回车符 return、制表符或空格。一个简单的 ToString() 有效但将那些留在:

data.ToString()

结果:

"{\r\n "Field1": "Value1",\r\n "Field2": "Value2"\r\n }"

寻找:

"{"Field1": "Value1","Field2":"Value2"}"

当然,我可以执行简单的查找和替换字符串命令。但是,有些字段将包含回车 return、制表符或空格,我不想更改它们。

编辑:无法删除此问题,请有人删除此问题,因为它已得到答复。

在 .NET 6 中,您可以使用 JsonNode.ToJsonString()(使用 System.Text.Json.Nodes 命名空间),但您需要先从 JsonElement 转换为 JsonObject :

var jsonString = JsonObject.Create(data).ToJsonString();

ToJsonString()JsonSerializerOptions 作为参数,因此如果您想要不同的行为,您可以指定 WriteIndented,但默认情况下它将输出 WriteIndented = false(这是您想要的格式)。

可以转换为扩展方法:

public static class Extensions
{
    public static string ToJsonString(this JsonElement element, bool indent = false) 
        => element.ValueKind != JsonValueKind.Object
            ? "" 
            : JsonObject.Create(element).ToJsonString(new JsonSerializerOptions { WriteIndented = indent });
}

// usage
// non-indented
var jsonString = element.ToJsonString();
// indented
var jsonString = element.ToJsonString(true);