2014-02-26 3 views
2

Я сохраняю данные своих объектов как JSON, используя NewtonSoft.Json.Удаляет ли Newtonsoft.Json все символы?

Предоставляет ли эта библиотека все потенциально незаконные символы, или я должен избегать символов перед попыткой сериализации?

Например

, если у меня есть объект сайта:

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

Вам не нужно ничего делать специально. Именно поэтому для парсеров Json нужны, –

ответ

6

Предоставляет ли эта библиотека все потенциально незаконные символы, или я должен избегать символов перед попыткой сериализации?

Это была бы красивая библиотека для мусора, если бы она требовала сериализации в JSON и не справлялась с этим правильно.

Кроме того, если вы «избежите» этих символов перед передачей данных в библиотеку, тогда библиотека будет избегать экранов, и вы не получите результат, который вы намереваетесь. Например, предположим, я думал, что не будет обрабатывать escape-файлы (\f), и поэтому я сделал это, чтобы «убежать» от них: mydata = mydata.replace(/\f/g, "\\f"); Теперь у mydata больше нет формы, у него есть обратная косая черта, за которой следует буква f , Если вы кодируете это в JSON, а затем декодируете его, это будет обратная косая черта, сопровождаемая буквой f, а не формой.

Смежные вопросы