我正在使用来自 Azure 事件中心的事件,并且需要将事件负载记录为字符串。有效负载为 JSON 格式。
private readonly EventProcessorClient _eventProcessor;
_eventProcessor.ProcessEventAsync += ProcessMessage;
我试过这个:
private async Task ProcessMessage(ProcessEventArgs eventArgs)
{
string stringPayload1 = Encoding.UTF8.GetString(eventArgs.Data.Body.Span);
Console.WriteLine(stringPayload1);
string stringPayload2 = eventArgs.Data.EventBody.ToString(); // EventBody is BinaryData
Console.WriteLine(stringPayload2);
}
但在这两种情况下它们都包含空格。输出:
{ "data": [ { "name": "cpuUsage", "value": "18" }, { "name": "cpuTemperature", "value": "49" }, { "name": "memoryUsage", "value": "24" }, { "name": "storageUsage", "value": "23" }, { "name": "storageHealth", "value": "90" } ], "datacontenttype": "application/json", "id": "cd31d925-b600-4d5b-89eb-25c30388ecce", "source": "/CCZ15A60022248000012", "specversion": "1.0", "time": "2023-08-15T12:21:08", "type": "telemetry"}
我需要这个紧凑的输出
{"data":[{"name":"cpuUsage","value":"18"},{"name":"cpuTemperature","value":"49"},{"name":"memoryUsage","value":"24"},{"name":"storageUsage","value":"23"},{"name":"storageHealth","value":"90"}],"datacontenttype":"application/json","id":"cd31d925-b600-4d5b-89eb-25c30388ecce","source":"/CCZ15A60022248000012","specversion":"1.0","time":"2023-08-15T12:21:08","type":"telemetry"}
不可能要求制作者在发送前删除所有空格。 有没有什么方法可以在没有
string.Replace
的情况下实现这一目标?
我唯一能想到的就是使用
Regex.Replace()
,尽管我确实认为 String.Replace()
会更容易。
尽管如此,这里是使用
Regex.Replace()
的代码:
string jsonString = @" { ""data"": [ { ""name"": ""cpuUsage"", ""value"": ""18"" }, { ""name"": ""cpuTemperature"", ""value"": ""49"" }, { ""name"": ""memoryUsage"", ""value"": ""24"" }, { ""name"": ""storageUsage"", ""value"": ""23"" }, { ""name"": ""storageHealth"", ""value"": ""90"" } ], ""datacontenttype"": ""application/json"", ""id"": ""cd31d925-b600-4d5b-89eb-25c30388ecce"", ""source"": ""/CCZ15A60022248000012"", ""specversion"": ""1.0"", ""time"": ""2023-08-15T12:21:08"", ""type"": ""telemetry""}";
// Remove unnecessary spaces
string formattedJsonString = Regex.Replace(jsonString, @"(?<=["",\{\[\:])(\s+)", "");