Установите JsonSerializerSettings.MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead
.
Этот пример десериализует JSON с MetadataPropertyHandling, установленным в ReadAhead, так что свойства метаданных не должны быть в начале объекта.
blockquote>string json = @"{ 'Name': 'James', 'Password': 'Password1', '$type': 'MyNamespace.User, MyAssembly' }"; object o = JsonConvert.DeserializeObject(json, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, // $type no longer needs to be first MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead });
Обратите внимание, что этот параметр будет иметь значение удара .
Наконец, при использовании
TypeNameHandling
выполните обратите внимание на это предостережение от документов Newtonsoft :ТипNameHandling следует использовать с осторожностью, когда ваше приложение десериализует JSON из внешнего источника. Входящие типы должны быть проверены с помощью специального SerializationBinder при десериализации со значением, отличным от None.
blockquote>Для обсуждения того, почему это может быть необходимо, см. ТипNameHandling осторожность в Newtonsoft Json .