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

时间:2014-02-26 14:59:31

标签: c# json json.net

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

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

E.g

如果我有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);

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

1 个答案:

答案 0 :(得分:6)

  

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

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

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