{
"results": [
{
"content1": {
"prop1" : "value1",
"prop2" : "value2"
},
"content2": {
"prop1" : "value1",
"prop2" : "value2"
},
"contentn": {
"prop1" : "value1",
"prop2" : "value2"
}
}
]
}
我在将这个json转换为动态C#对象时遇到了麻烦,这里的情况是'content1'到'content'总是不同的动态内容,我确实需要将它转换为类似字典的东西。这个想法是减少类,因为我需要创建大量的类。
PS:我使用的是第三方API,返回的数据如上所述。
尝试了多种方法来处理此问题。JsonConvert
尝试Map到Dictionary
、List
,JsonSerializer.Deserialize
也是如此
3条答案
按热度按时间gc0ot86w1#
下面的解决方案使用System.Text.Json
创建一个
Content
类:现在你可以反序列化:
fnvucqvd2#
要将JSON转换为动态C#对象,可以使用
Newtonsoft.Json.Linq
名称空间中的JObject
类,下面是一个示例:在本例中,我们首先使用
JObject.Parse
将JSON字符串解析为JObject
,然后访问results
数组和该数组中的第一个对象(假设只有一个),并将该对象存储在dynamic
变量中,该变量允许我们动态访问其属性。接下来,我们使用
foreach
循环遍历动态对象的所有属性。在循环内部,我们可以使用prop.Name
访问属性的名称,使用prop.Value
访问属性的值。我们将值存储在另一个名为content
的dynamic
变量中。最后,我们可以使用点标记动态访问
content
对象的属性,就像访问常规C#对象一样,在本例中,我们访问prop1
和prop2
,但是可以用JSON中的实际属性名替换它们。e3bfsja23#
您可以尝试使用ExpandoObject非常强大的那种工作。