如何在C#中使用RestSharp反序列化动态json属性?

如何在C#中使用RestSharp反序列化动态json属性?,c#,json,dynamic,deserialization,restsharp,C#,Json,Dynamic,Deserialization,Restsharp,我有一个具有以下结构的web服务(我无法编辑): /users { "response" : { "users": [{"name": "John"},{"name": "Jack"}] }, "page" : { "current":1, "total":1} } { "response" : { "pets": [{"name": "Fido"},{"name": "Tweety"}] }, "page" :

我有一个具有以下结构的web服务(我无法编辑):

/users

{
    "response" : {
        "users": [{"name": "John"},{"name": "Jack"}]
    },
    "page" : { "current":1, "total":1}
}
{
    "response" : {
        "pets": [{"name": "Fido"},{"name": "Tweety"}]
    },
    "page" : { "current":1, "total":1}
}
/pets

{
    "response" : {
        "users": [{"name": "John"},{"name": "Jack"}]
    },
    "page" : { "current":1, "total":1}
}
{
    "response" : {
        "pets": [{"name": "Fido"},{"name": "Tweety"}]
    },
    "page" : { "current":1, "total":1}
}
正如您在“响应”属性更改中看到的那样。 如何使用RestSharp反序列化一般响应?我不想为每个资源编写一个响应类

我已经编写了以下通用响应类

类重新响应{
公共响应主体响应{get;set;}
公共响应页{get;set;}
}
类响应体{
公共列表资源列表{get;set;}
}
班级反应表{
公共int当前{get;set;}
公共整数总计{get;set;}
}
类用户{公共字符串名称{get;set;}}
类Pet{公共字符串名称{get;set;}}
当然,RestSharp不能将动态json属性与ResponseBody.list属性链接。
我怎样才能做到这一点呢?

我首先要说的是,这一点都不优雅:

您可以使用

RestResponse response = client.Execute(request);
var jsonString = response.Content; // raw content as string
从那时起,您可以使用如下方式查询:

var jObject = JObject.Parse(jsonString);
// this could probably be written nicer, but you get the idea...
var resources = jObject ["response"]["users"].Select(t => t["name"]);
resources
将保存您的姓名列表。这是丑陋的、僵化的,我不推荐这样做


最好坚持使用智能继承和自定义类。它更具可读性,而且您的响应对象可能不会都只有一个属性,对吗?

实际上,我在寻求一种方法来避免像这样不雅观的方法:-p