Python API と通信するために、restsharp と newtonsoft.json を使用しています。
通信は正常に機能します。単純な文字列を返す基本的なクエリは処理されるため、問題はありません。
より複雑な結果の逆シリアル化に問題があり、これを初めて実行しています。
したがって、Web サービスの観点からは、次の 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"
}
]
}
私のC#プログラムのresponse.contents(RestClient.Executeの結果)で、次のようなものを取得しています(これを1つのデータ行に切り捨てました):
{\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);
... null を返します。問題は、単一のデータ行だけでなく、辞書「従業員」を返すことだと思います。これを正しく逆シリアル化するには、どのように設計する必要がありますか?