Допустим, у меня есть следующая строка:
string MyString = @"{""name"":""John"",""url"":""https://www.john.com""}";
И я могу десериализовать его двумя способами, такими как:
JObject jobj = (JObject)JsonConvert.DeserializeObject(MyString);
dynamic jobj2 = JsonConvert.DeserializeObject(MyString);
Когда я делаю GetType для обоих объектов, я получаю оба:
Newtonsoft.Json.Linq.JObject
Тем не менее, когда я регистрирую jobj2.name, я получаю John , но когда я регистрирую jobj.name, я получаю:
Newtonsoft.Json.Linq.JObject' does not contain a definition for 'name' and no extension method 'name' accepting a first argument of type 'Newtonsoft.Json.Linq.JObject'
И должен называть это как jobj ["name"]
В чем причина разного синтаксиса, поскольку оба являются JObject?