2015-03-10 2 views
0

У меня есть следующий код:Как десериализовать сырые типы?

var str = JsonConvert.DeserializeObject<byte[]>("dGVzdA=="); 

Но это не работает, исключение говорит: «Неожиданный символ encounterecd при разборе значение: d. Путь„“, строка 0 позиции 0. Это явно пытается читать это как JSON, хотя он должен прочитать его в байт []

+0

Ну это называется JSONConvert, так что я предполагаю, что ожидает JSON объект –

+0

, но это работает для таких вещей, как Int – Blub

+0

ок очевидно base64 строка должна быть обернута в «» для этой работы, как ожидается. weird – Blub

ответ

1

JsonConvert.DeserializeObject ожидает действительный JSON выражение. dGVzdA== не является допустимым JSON, поэтому вы получите ошибку. в JSON, все строки должны быть заключены в кавычки, согласно спецификации Если вы добавляете кавычки в строку base-64, это делает ее допустимым значением строки JSON, поэтому десериализатор может ее обрабатывать. это короткая скрипку, чтобы продемонстрировать: https://dotnetfiddle.net/BuQc1R

+0

Я не знаю тип, который я пытаюсь преобразовать, это может быть примитивный тип или что-то еще. Странная вещь о Newtonsoft заключается в том, что она, по-видимому, требует, чтобы строка base64 была завернута в кавычки при десериализации, но выдает ошибку, когда у вас есть эти кавычки при ее сериализации. – Blub

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