如何在没有.NET Core的escaope字符的情况下将JSON序列化为字符串?

时间:2018-02-08 10:25:20

标签: c# json .net-core

我想在.NET Core的字符串中将C#对象序列化为JSON。

我已尝试使用此代码,但它会生成带引号的转义字符的字符串:

string s = JsonConvert.SerializeObject(sensorData);

这是结果字符串:

"{\"Id\":\"100201\",\"Timestamp\":\"2018-02-08T08:43:51.7189855Z\",\"Value\":12.3}"

如何在没有像这样的转义字符的情况下将对象序列化为字符串?

"{"Id":"100201","Timestamp":"2018-02-08T08:43:51.7189855Z","Value":12.3}"

2 个答案:

答案 0 :(得分:8)

转义字符不在那里。如果我们可以合理地假设您的sensorData类似于:

class SensorData
{
    public int Id { get; set; }
    public DateTime TimeStamp { get; set; }
    public double Value { get; set; }
}

然后,如果我这样做:

var sensorData = new SensorData {
    Id = 100201,
    TimeStamp = DateTime.Now,
    Value = 12.3,
};
string s = JsonConvert.SerializeObject(sensorData);
Console.WriteLine(s);

输出是:

{"Id":100201,"TimeStamp":"2018-02-08T10:30:40.2290218+00:00","Value":12.3}

转义字符是IDE功能,不是JSON的一部分。 IDE会显示字符串,因为您需要将它们复制并粘贴到目标语言中;所以:如果值是上面发布的JSON,那么IDE将显示它作为C#文字:

"{\"Id\":100201, ...snip... , \"Value\":12.3}"

但是:这不是字符串的内容

答案 1 :(得分:0)

正如 Marc Gravell 所说,在调试时,使用 Json Viewer(观看开始或结束时的放大镜图标)并检查。

如果您真的将转义字符作为 Json 响应的一部分。假设在使用 Postman 或 Fiddler 测试 API 时,即使在 RAW 响应中,试试这个:

ASP .NET core 有数据格式化程序,输出受 Accepts 标头的影响。如果使用 Accepts: application/json 标头调用 API,尝试删除此标头。

希望这对某人有帮助。