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);
我需要将 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);