我无法将JSON数据转换为动态类型定义。我看过JObject,JsonConvert序列化/反序列化,没有任何效果。使这项工作最接近的是JsonConvert.DeserializeAnonymousType,但这需要一个与JSON匹配的定义。就我而言,JSON非常复杂,因此我确实需要将JSON实例转换为完全匿名的动态类型。
dynamic rawjson = @"{ 'tags': { 'abcd' : '12345' },'properties': { 'desired': { 'PropOne' : '2345', 'PropTwo' : '6789' } } }";
#region reference object
dynamic reference = new
{
SomeName = $"xxxx",
initialTwin = new
{
tags = new { abcd = 12345 },
properties = new
{
desired = new
{
PropOne = "2345",
PropTwo = "6789"
}
}
}
};
#endregion
dynamic anonobject = JsonConvert.DeserializeAnonymousType(rawjson, reference.initialTwin);
dynamic testobject = new
{
SomeName = $"xxxx",
initialTwin = $"{anonobject}"
};
我需要上面的代码中的“ testobject”看起来完全像“ reference”对象。使用DesializeAnonymousType使我很接近,但是很难创建和维护该定义。
如何在不键入DeserializeAnonyousType定义的情况下从JSON数据实例获得相同的结果?有可能吗?
答案 0 :(得分:0)
我已经测试了以下方法,并且对我有用:
outer()
但是,由于这是一个动态对象,因此您需要了解可能要使用的属性。
示例:
var anonobject = JsonConvert.DeserializeObject<ExpandoObject>(rawjson);
dynamic testobject = new
{
SomeName = $"xxxx",
initialTwin = anonobject
};