2015-11-17 1 views
4

Я программирую реализацию C# для Qualtrics API (v 2.5), используя RestSharp. При вызове метода getUserIds он возвращает список пользователей в формате JSON (см. Пример ниже).REST Api возвращает разные имена объектов для одного и того же объекта, как обращаться с RestSharp?

Проблема/вопрос я лицо, что для каждого объекта пользователя (список объектов под Result) он генерирует другой идентификатор, начиная с URH_. При использовании json2csharp предполагается, что он всегда является другим классом, хотя на самом деле он абсолютно такой же, как вы можете видеть на выходе, и, как указано в документации api. Как я могу наилучшим образом разрешить это - чтобы я смог сделать класс UserData, который я могу повторно использовать? Потому что теперь я, очевидно, всегда вижу эти случайные URH_ префиксные классы в каждом ответе.

Примечания: Я думал, что я мог бы попытаться массировать ответ первым, и когда я получаю ответ заменить каждый URH_ приставку объекта под корневым объектом Result с "UserData" строкой - но я считаю, что это нарушение правил немного, и подумал, что у сообщества будет лучшее решение?


Ниже необработанный вывод JSON (обратите внимание, что я удалил конфиденциальную информацию):

{"Meta":{"Status":"Success","Debug":""},"Result":{"URH_3wpA9pxGbE0c7Xu":{"DivisionID":null,"UserName":"[email protected]","UserFirstName":"x","UserLastName":"x","UserAccountType":"UT_4SjjZmbPphZGKDq","UserEmail":"[email protected]","UserAccountStatus":"Active"},"URH_57vQr8MVXgpcPUo":{"DivisionID":"DV_XXXXXXXX","UserName":"[email protected]","UserFirstName":"X","UserLastName":"X","UserAccountType":"UT_BRANDADMIN","UserEmail":"[email protected]","UserAccountStatus":"Active"},"URH_6ujW1EP0QJOUaoI":{"DivisionID":"DV_XXXXXXXYZ","UserName":"[email protected]","UserFirstName":"x","UserLastName":"x","UserAccountType":"UT_XXXXXABCD","UserEmail":"[email protected]","UserAccountStatus":"Active"}}} 

Это то, что я получаю при создании модели с использованием json2csharp:

public class Meta 
{ 
    public string Status { get; set; } 
    public string Debug { get; set; } 
} 

public class URH3wpA9pxGbE0c7Xu 
{ 
    public object DivisionID { get; set; } 
    public string UserName { get; set; } 
    public string UserFirstName { get; set; } 
    public string UserLastName { get; set; } 
    public string UserAccountType { get; set; } 
    public string UserEmail { get; set; } 
    public string UserAccountStatus { get; set; } 
} 

public class URH57vQr8MVXgpcPUo 
{ 
    public string DivisionID { get; set; } 
    public string UserName { get; set; } 
    public string UserFirstName { get; set; } 
    public string UserLastName { get; set; } 
    public string UserAccountType { get; set; } 
    public string UserEmail { get; set; } 
    public string UserAccountStatus { get; set; } 
} 

public class URH6ujW1EP0QJOUaoI 
{ 
    public string DivisionID { get; set; } 
    public string UserName { get; set; } 
    public string UserFirstName { get; set; } 
    public string UserLastName { get; set; } 
    public string UserAccountType { get; set; } 
    public string UserEmail { get; set; } 
    public string UserAccountStatus { get; set; } 
} 

public class Result 
{ 
    public URH3wpA9pxGbE0c7Xu URH_3wpA9pxGbE0c7Xu { get; set; } 
    public URH57vQr8MVXgpcPUo URH_57vQr8MVXgpcPUo { get; set; } 
    public URH6ujW1EP0QJOUaoI URH_6ujW1EP0QJOUaoI { get; set; } 
} 

public class RootObject 
{ 
    public Meta Meta { get; set; } 
    public Result Result { get; set; } 
} 

ответ

7

Это просто - просто используйте Dictionary<string, UserData> общий тип для Result Поле:

public class Response 
{ 
    public Meta Meta { get; set; } 
    public Dictionary<string, UserData> Result { get; set; } 
} 

public class Meta 
{ 
    public string Status { get; set; } 
    public string Debug { get; set; } 
} 

public class UserData 
{ 
    public string DivisionID { get; set; } 
    public string UserName { get; set; } 
    public string UserFirstName { get; set; } 
    public string UserLastName { get; set; } 
    public string UserAccountType { get; set; } 
    public string UserEmail { get; set; } 
    public string UserAccountStatus { get; set; } 
} 
+1

Спасибо, я попробую это и вернусь к вам! –

+1

Как раз для того чтобы подтвердить, работал для меня a-ok этот путь. Глупый я сам не придумал это, новичок в использовании REST API;) ... –

Смежные вопросы