Newtonsoft.Json是否会逃避所有角色?

Dav*_*Dev 2 c# json json.net

我使用NewtonSoft.Json将对象数据保存为JSON.

此库是否会逃避所有可能非法的字符,还是应该在尝试序列化之前转义字符?

例如

如果我有一个Site对象:

public class Site 
{
    public string SiteName { get; set; }   
}

...
...

var site = new Site();
site.SiteName = "$$ what could I/Put 'here' %$%^*^(&*& to break this?";

var outputJson = JsonConvert.SerializeObject(site);
Run Code Online (Sandbox Code Playgroud)

我是否有可能SerializeObject()通过添加未转义的非法字符来破解该方法,或者NewtonSoft.Json是否为我这样做?

T.J*_*der 6

此库是否会逃避所有可能非法的字符,还是应该在尝试序列化之前转义字符?

如果它声称序列化为JSON并且没有正确处理,那将是一个非常垃圾的库.

此外,如果您在将数据提供给库之前"转义"这些字符,那么库将逃脱转义,并且您将无法获得您想要的结果.例如,假设我认为它不会处理转义的formfeed(\f)字符,所以我这样做是为了"逃避"它们:mydata = mydata.replace(/\f/g, "\\f");现在,mydata它不再有一个formfeed,它有一个反斜杠后跟字母f.如果你将它编码为JSON,然后解码它,它将是一个反斜杠后跟字母f,而不是换页.