我想在.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}"
答案 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,尝试删除此标头。
希望这对某人有帮助。