Json.Странное поведение сетевой сериализации

#.net #json

#.net #json

Вопрос:

У меня есть строка «acount»: «3Jmz2251olK5r /9uOUAWhrp0=»

когда я использовал JsonConvert.DeserializeObject(«acount»:»3Jmz2251oO llK5r /9uOUAWhrp0=»);

Символ исчез из строки учетной записи.

Вы знаете кого-нибудь, как я могу это решить?

Я использую .NET 2.0.

Спасибо, Томас

Комментарии:

1. Я не вижу обратной косой черты в вашей учетной записи. Вы имеете в виду косую черту?

Ответ №1:

Обратная косая черта в C # экранирует следующий символ. Чтобы поместить реальную обратную косую черту в строку, вам нужно использовать двойную обратную косую черту:

 "3Jmz2251oO llK5r\/9uOUAWhrp0="
  

Или вы можете использовать литеральную строку:

 @"3Jmz2251oO llK5r/9uOUAWhrp0="
  

Комментарии:

1. На самом деле есть двойная обратная косая черта. Строка учетной записи поступает из другого приложения после десериализации с помощью Json.NET \ исчез. Спасибо.

2. @Tomas: обратная косая черта также используется в качестве escape-символа в javascript, поэтому, если исходная строка имела две обратные косые черты, правильно, чтобы результирующая строка имела только одну обратную косую черту при десериализации JSON.

3. Я использую Json.net библиотека с открытым исходным кодом, потому что мой проект работает на .Net 2.0, и эта библиотека удаляет обратную косую черту в свойстве объекта, которое десериализуется. Спасибо

4. @Tomas: Да, это правильное поведение. Обратная косая черта в JSON является управляющим символом для следующего за ним символа. Когда он десериализуется, его следует удалить.