如何在没有“\”字符的情况下将 json 发送到 IoT 中心

How to send a json into IoT Hub without the '\' character

我正在尝试使用以下格式将 JSON 字符串发送到 Azure IoT 中心:

string format = "{\"info1\":\"info1Data\",\"info2\":\"info2Data\",\"info3\":{\"info3Data\":[]}}";

问题是,在我将字符串序列化为 JSON 对象后,它会将其发送到 IoT 中心:

{\"info1\":\"info1Data\",\"info2\":\"info2Data\",\"info3\":{\"info3Data\":[ ]}}

我的目标是从发送到 IoT 的字符串中删除“\”字符,为此我尝试了多种方法来解决此问题,例如:

 var test= new string(format.ToCharArray());
 test.Trim();
 Console.WriteLine(test);
 testing = test.Replace(@"\", "");
 Console.WriteLine(testing);

var charsToRemove = new string[] { @"\" };
 foreach (var c in charsToRemove)
 {
    testing = testing.Replace(c, string.Empty);
 }
 Console.WriteLine(testing);

我正在使用 VS2019,但我仍然无法从字符串中删除 '\' 字符。

提前致谢。

尝试通过在原始字符串 (@) 中将引号加倍 ("") 来转义引号,如下面 post:

中所述

How to add double quotes to a string that is inside a variable?

例如:

string format = @"{""info1"":""info1Data"",""info2"":""info2Data"",""info3"":""info3Data"":[]}}";

您可以使用匿名类型,例如:

var data = new { info1 = "info1Data", info2 = "info2Data", info3 = new { info3Data = new JArray() } };
var jsontext = JsonConvert.SerializeObject(data);
var message = new Message(Encoding.UTF8.GetBytes(jsontext));
await client.SendEventAsync(message);