Я использую restsharp и newtonsoft.json для связи с моим API-интерфейсом Python.Редактирование дескриптора словаря Json с помощью RestSharp/Newtonsoft.Json.
Связь работает нормально. Базовые запросы, которые возвращают простые строки, обрабатываются, так что это не проблема.
У меня проблема с десериализацией более сложных результатов, и я делаю это в первый раз.
Таким образом, с веб-службы точки зрения я возвращаю следующую структуру JSon:
{
"Employee": [
{
"Department.DepartmentName": "IT",
"Employee.EmployeeArchived": 0,
"Employee.EmployeeDepartmentId": 13,
"Employee.EmployeeFired": 0,
"Employee.EmployeeId": 1,
"Employee.EmployeeName": "Name1",
"Employee.EmployeePID": 292,
"Employee.EmployeeSurname": "Surname1"
},
{
"Department.DepartmentName": "IT",
"Employee.EmployeeArchived": 0,
"Employee.EmployeeDepartmentId": 4,
"Employee.EmployeeFired": 0,
"Employee.EmployeeId": 2,
"Employee.EmployeeName": " Name2",
"Employee.EmployeePID": 50,
"Employee.EmployeeSurname": " Surname2"
}
]
}
в response.contents (результат RestClient.Execute) в моем C# программе я получаю что-то вроде этого (I урезал это только до одного ряда данных):
{\n \"Employee\": [\n {\n \"Department.DepartmentName\": \"EDV\", \n \"Employee.EmployeeArchived\": 0, \n \"Employee.EmployeeDepartmentId\": 13, \n \"Employee.EmployeeFired\": 0, \n \"Employee.EmployeeId\": 1, \n \"Employee.EmployeeName\": \"Name1\", \n \"Employee.EmployeePID\": 292, \n \"Employee.EmployeeSurname\": \"Surname1\"\n }
Пока это выглядит хорошо.
Теперь. Я пытался определить мой класс данных, чтобы иметь возможность десериализации его следующим образом:
public class Employee
{
[JsonProperty("Department.DepartmentName")]
public string Department { get; set; }
[JsonProperty("Employee.EmployeeName")]
public string Name {get; set;}
[JsonProperty("Employee.EmployeeSurname")]
public string Surname { get; set; }
[JsonProperty("Employee.EmployeeArchived")]
public int Archived { get; set; }
[JsonProperty("Employee.EmployeeFired")]
public int Fired { get; set; }
[JsonProperty("Employee.EmployeeId")]
public int Id { get; set; }
[JsonProperty("Employee.EmployeeDepartmentId")]
public int DepId { get; set; }
[JsonProperty("Employee.EmployeePID")]
public int PID { get; set; }
В капельном классе содержит конструктор, но я предполагаю, что это не проблема.
Теперь, просто позвонив:
var Data = JsonConvert.DeserializeObject<Employee>(response.Content);
... возвращает нуль. Я полагаю, что проблема заключается в том, что я возвращаю словарь «Сотрудник», а не только одну строку данных. Как мне нужно будет спроектировать его, чтобы десериализировать это правильно?