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

时间:2019-05-14 13:36:04

标签: c# json azure-iot-hub

我正在尝试使用以下格式将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);

OR

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

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

谢谢。

2 个答案:

答案 0 :(得分:2)

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

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);

答案 1 :(得分:0)

尝试通过在原始字符串(@)中将引号(“”)加倍来对引号进行转义,如下文所述:

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

例如:

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