Десериализовать OData типа JSON с дочерними элементами, используя RestSharp - PullRequest
0 голосов
/ 18 октября 2018

Итак, у меня есть этот ответ Json OData:

{
    "@odata.context": "http://localhost:7548/DynamicsNAV110/api/beta/$metadata#companies(9b562fdb-5071-4aef-8bf6-d7aa6fd0b472)/salesOrders",
    "value": [
        {
            "@odata.etag": "W/\"JzQ0O2R4VUFBQUo3LzFBQVZnQXhBRGdBTFFBd0FEQUFNQUF3QURrQUFBQUFBQT09Nzs4MTAwMDQyMDsn\"",
            "id": "ae5dddef-397b-4fda-bfc2-7fb6490b295d",
            "number": "PV18-00009",
            "customerNumber": "10780",
            "billingPostalAddress": {
                "street": "HONDURAS N'.43",
                "city": "AGUIMES",
                "state": "LAS PALMAS",
                "countryLetterCode": "ES",
                "postalCode": "35260"
            },
            "salesOrderLines@odata.context": "http://localhost:7548/DynamicsNAV110/api/beta/$metadata#companies(9b562fdb-5071-4aef-8bf6-d7aa6fd0b472)/salesOrders(ae5dddef-397b-4fda-bfc2-7fb6490b295d)/salesOrderLines",
            "salesOrderLines": [
                {
                    "@odata.etag": "W/\"JzQwO1pCVUFBQUNSNzkxZHJuczUyaysvd24rMlNRc3BYUUNIRUNjQUFBQUExOzAwOyc=\"",
                    "documentId": "ae5dddef-397b-4fda-bfc2-7fb6490b295d",
                    "sequence": 10000,
                    "itemId": "fb326b66-26be-4e38-a53f-301da19f445b",
                    "quantity": 1,
                    "lineDetails": {
                        "number": "0000000",
                        "displayName": "REMATE BLANCO EXTERNO 90"
                    },
                    "unitOfMeasure": {
                        "code": "UDS",
                        "displayName": "Unidades",
                        "symbol": null,
                        "unitConversion": null
                    }
                }
            ]
        }
    ]
}

Я пытаюсь десериализовать это с помощью RestSharp, поэтому у меня есть 2 класса:

public class SalesOrder
        {
            public string number { get; set; }
            public SalesOrderLine[] salesOrderLines { get; set; }
        }

        public class SalesOrderLine
        {
            public string itemId { get; set; }
        }

А также этот пользовательскийОболочка:

public class ODataCollectionWrapper<T> where T : class
        {
            public IEnumerable<T> Value { get; set; }
        }

Это мой запрос:

var client = new RestClient("http://localhost:7548/DynamicsNAV110/api/beta/companies%289b562fdb-5071-4aef-8bf6-d7aa6fd0b472%29/salesOrders?$filter=number%20eq%20%27PV18-00009%27&$expand=salesOrderLines");
            client.Authenticator = new NtlmAuthenticator();
            var request = new RestRequest(Method.GET);
            IRestResponse response = client.Execute<ODataCollectionWrapper<SalesOrder>>(request);

Так что в отладчике я вижу, что у меня правильно есть родительский элемент в response.Data.Value.number, нодочерний элемент SalesOrderLines не загружается.

Есть идеи, как правильно сериализовать это?

...