Json 负载转换为不带空格和换行符的字符串

问题描述 投票:0回答:1

我正在使用来自 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
的情况下实现这一目标?

c# .net azure-eventhub
1个回答
-1
投票

我唯一能想到的就是使用

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+)", "");
© www.soinside.com 2019 - 2024. All rights reserved.