Есть необходимость получить объект типа 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);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости