Недостатки сериализации, на которые вы указали, на самом деле отсутствуют, по крайней мере, в случае JSON.NET:
- JSON.NET по умолчанию не добавляет метаданные.Вы можете сказать, чтобы он добавлял метаданные, если вам это нужно (например, когда одно свойство может содержать значения разных типов), но это необязательно.
- Вы заменяете трудность создания классов на трудность работы сСтруны и броски, и я думаю, что это намного хуже.Кроме того, вы можете игнорировать поля, которые вам не интересны, просто не добавляйте их в свои типы.
Но, если вы действительно хотите это сделать, вы можете.Эквивалентными типами являются JObject
и JArray
, поэтому, если вы хотите десериализовать некоторый объект, используйте:
JObject obj = JsonConvert.DeserializeObject<JObject>(json);
В качестве другого варианта вам совсем не нужно указывать нужный типМуравей вернет либо JObject
, либо JArray
:
object objectOrArray = JsonConvert.DeserializeObject(json);