Есть необходимость получить объект типа dynamic из Json на .NET Core 3.0:
{
"Name": "Bob",
"Age": 22
}
dynamic obj = someJsonSer.Deserialize(JsonDataString);
obj.Name; //Bob
obj.Age; //22
Близкое по смыслу - JsonDocument (System.Text.Json), но это не совсем то:
using(var jDoc = JsonDocument.Parse(response_string))
{
string foo = jDoc.RootElement.GetProperty("Name").GetString();//Bob
}
Json.NET - вариант не желательный.
Какие возможные опции в этой ситуации?
Как я понимаю, во втором примере вас не устраивает то, что вам приходится работать, вызывая различные методы.
В таком случае, вы можете создать класс-наследник от ExpandoObject
, в котором прописать всю необходимую логику поиска свойств в JsonDocument
.
По моему, по другому никак.
Влез ради интереса в исходники Dapper, что бы посмотреть, как он работает если тип неизвестен и там если вызываешь Qyery, то dapper все кладет в DapperRow : System.Dynamic.IDynamicMetaObjectProvider
=> по сути-это то, что я и посоветовал сверху.
В JSON.NET, как я понимаю, поддержка dynamic
есть из "коробки":
dynamic d = JObject.Parse("{number:1000, str:'string', array: [1,2,3,4,5,6]}");
Console.WriteLine(d.number);
Console.WriteLine(d.str);
Console.WriteLine(d.array.Count);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Проблема в том что DataGrid после удаления из коллекции (ObservableCollection) какого то слова, в DataGrid коллекция остается не измененнымРаботает в другом...