我正在使用Newtonsoft.Json库来序列化一个对象。问题是,当我创建JSON字符串时,它带有'\'字符。我看到一些答案说这只是一个调试器问题,但我正在使用这个'\'获取JSON,直到消费该服务的客户端。 我也试图用一个函数删除这个chacater,但似乎它与StringBuilder完全相同。
private static string DatatableToJSON(DataTable dt)
{
string JSONresult;
JSONresult = JsonConvert.SerializeObject(dt, Formatting.None);
return JSONresult;
}
我得到了:
“[{\” ID \ “:\” 72d209d5-0028-4162-94d0-d8cae856e1b7 \”,\ “用户名\”:\ “尼古拉斯\”,\ “农布雷\”:\ “ASD \”} {\ “ID \”:\ “8ecdd5eb-b6a8-40f7-87a6-28ae39d5924c \”,\ “用户名\”:\ “马里奥\”,\ “农布雷\”:\ “ASD \”},{\” ID \ “:\” c48d2d27-40af-4bfe-A912-a18689c70076 \ “\ ”用户名\“:\ ”迭\“,\ ”农布雷\“:\ ”ASD \“}]”
任何人都可以帮我这个吗?这让我发疯了!。
感谢。
答案 0 :(得分:3)
它只是一个转义字符。在String
中,您可以看到反斜杠为转义字符。您可以运行该代码。
JSONresult.ToString();
输出中没有包含" \" 。
答案 1 :(得分:0)
那些是逃脱角色。您可以将所有\'
,\"
,\\
替换为'
,"
,\
。
无论如何,如果它们出现在客户端,这很奇怪。我认为它可能是您正在使用的字符串格式或过滤器。
答案 2 :(得分:0)
最后,这解决了我的问题。我希望它可以帮到某人:
public static IHtmlString SerializeObject(object value)
{
using (var stringWriter = new StringWriter())
using (var jsonWriter = new JsonTextWriter(stringWriter))
{
var serializer = new JsonSerializer
{
// Let's use camelCasing as is common practice in JavaScript
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
// We don't want quotes around object names
jsonWriter.QuoteName = false;
serializer.Serialize(jsonWriter, value);
return new HtmlString(stringWriter.ToString());
}