Динамика 365 данных фильтра OData из ComplexType - PullRequest
0 голосов
/ 10 апреля 2019

Моя цель - создать запрос OData, который просто получит данные "Value": 100000000, для последней записи в массиве параметров . Мне нужно просто отправить поле Value для последнего варианта в моих данных ответа, прежде чем Java соберет ответ и выполнит некоторую обработку. Мне не разрешено отправлять полный ответ на Java.

Я пытаюсь проанализировать данные из Наборы глобальных опций . У меня возникли проблемы с синтаксическим анализом Options ComplexType, и я смог получить доступ только к уровню Options в моем текущем запросе.

https://myorg.api.crm.dynamics.com/api/data/v9.0/GlobalOptionSetDefinitions(06d1a507-4d57-e911-a82a-000d3a1d5203)/Microsoft.Dynamics.CRM.OptionSetMetadata

Текущий пример ответа ниже. Поскольку Options - это ComplexType, я не нашел никаких документов или рекомендаций, которые бы указывали мне правильное направление, как это сделать. Если я смогу заставить этот запрос OData работать так, как я хочу, я наконец смогу реализовать свой сценарий на Java.

{
    "@odata.context": "https://myorg.api.crm.dynamics.com/api/data/v9.0/$metadata#GlobalOptionSetDefinitions/Microsoft.Dynamics.CRM.OptionSetMetadata/$entity",
    "ParentOptionSetName": null,
    "IsCustomOptionSet": true,
    "IsGlobal": true,
    "IsManaged": false,
    "Name": "new_customoptionset",
    "ExternalTypeName": "",
    "OptionSetType": "Picklist",
    "IntroducedVersion": "1.0",
    "MetadataId": "06d1a507-4d57-e911-a82a-000d3a1d5203",
    "HasChanged": null,
    "Options": [
        {
            "Value": 100000000,
            "Color": "#0000ff",
            "IsManaged": false,
            "ExternalValue": "",
            "ParentValues": [],
            "MetadataId": null,
            "HasChanged": null,
            "Label": {
                "LocalizedLabels": [
                    {
                        "Label": "a",
                        "LanguageCode": 1033,
                        "IsManaged": false,
                        "MetadataId": "09d1a507-4d57-e911-a82a-000d3a1d5203",
                        "HasChanged": null
                    }
                ],
                "UserLocalizedLabel": {
                    "Label": "a",
                    "LanguageCode": 1033,
                    "IsManaged": false,
                    "MetadataId": "09d1a507-4d57-e911-a82a-000d3a1d5203",
                    "HasChanged": null
                }
            },
            "Description": {
                "LocalizedLabels": [
                    {
                        "Label": "",
                        "LanguageCode": 1033,
                        "IsManaged": false,
                        "MetadataId": "0bd1a507-4d57-e911-a82a-000d3a1d5203",
                        "HasChanged": null
                    }
                ],
                "UserLocalizedLabel": {
                    "Label": "",
                    "LanguageCode": 1033,
                    "IsManaged": false,
                    "MetadataId": "0bd1a507-4d57-e911-a82a-000d3a1d5203",
                    "HasChanged": null
                }
            }
        },
        {
            "Value": 100000001,
            "Color": "#0000ff",
            "IsManaged": false,
            "ExternalValue": "",
            "ParentValues": [],
            "MetadataId": null,
            "HasChanged": null,
            "Label": {
                "LocalizedLabels": [
                    {
                        "Label": "b",
                        "LanguageCode": 1033,
                        "IsManaged": false,
                        "MetadataId": "0cd1a507-4d57-e911-a82a-000d3a1d5203",
                        "HasChanged": null
                    }
                ],
                "UserLocalizedLabel": {
                    "Label": "b",
                    "LanguageCode": 1033,
                    "IsManaged": false,
                    "MetadataId": "0cd1a507-4d57-e911-a82a-000d3a1d5203",
                    "HasChanged": null
                }
            },
            "Description": {
                "LocalizedLabels": [
                    {
                        "Label": "",
                        "LanguageCode": 1033,
                        "IsManaged": false,
                        "MetadataId": "0ed1a507-4d57-e911-a82a-000d3a1d5203",
                        "HasChanged": null
                    }
                ],
                "UserLocalizedLabel": {
                    "Label": "",
                    "LanguageCode": 1033,
                    "IsManaged": false,
                    "MetadataId": "0ed1a507-4d57-e911-a82a-000d3a1d5203",
                    "HasChanged": null
                }
            }
        },
        {
            "Value": 100000002,
            "Color": "#0000ff",
            "IsManaged": false,
            "ExternalValue": "",
            "ParentValues": [],
            "MetadataId": null,
            "HasChanged": null,
            "Label": {
                "LocalizedLabels": [
                    {
                        "Label": "c",
                        "LanguageCode": 1033,
                        "IsManaged": false,
                        "MetadataId": "0fd1a507-4d57-e911-a82a-000d3a1d5203",
                        "HasChanged": null
                    }
                ],
                "UserLocalizedLabel": {
                    "Label": "c",
                    "LanguageCode": 1033,
                    "IsManaged": false,
                    "MetadataId": "0fd1a507-4d57-e911-a82a-000d3a1d5203",
                    "HasChanged": null
                }
            },
            "Description": {
                "LocalizedLabels": [
                    {
                        "Label": "",
                        "LanguageCode": 1033,
                        "IsManaged": false,
                        "MetadataId": "11d1a507-4d57-e911-a82a-000d3a1d5203",
                        "HasChanged": null
                    }
                ],
                "UserLocalizedLabel": {
                    "Label": "",
                    "LanguageCode": 1033,
                    "IsManaged": false,
                    "MetadataId": "11d1a507-4d57-e911-a82a-000d3a1d5203",
                    "HasChanged": null
                }
            }
        }
    ],
    "Description": {
        "LocalizedLabels": [
            {
                "Label": "",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "83ca9f0d-4d57-e911-a82a-000d3a1d5203",
                "HasChanged": null
            }
        ],
        "UserLocalizedLabel": {
            "Label": "",
            "LanguageCode": 1033,
            "IsManaged": false,
            "MetadataId": "83ca9f0d-4d57-e911-a82a-000d3a1d5203",
            "HasChanged": null
        }
    },
    "DisplayName": {
        "LocalizedLabels": [
            {
                "Label": "MyCustom Option Set",
                "LanguageCode": 1033,
                "IsManaged": false,
                "MetadataId": "82ca9f0d-4d57-e911-a82a-000d3a1d5203",
                "HasChanged": null
            }
        ],
        "UserLocalizedLabel": {
            "Label": "MyCustom Option Set",
            "LanguageCode": 1033,
            "IsManaged": false,
            "MetadataId": "82ca9f0d-4d57-e911-a82a-000d3a1d5203",
            "HasChanged": null
        }
    },
    "IsCustomizable": {
        "Value": true,
        "CanBeChanged": true,
        "ManagedPropertyLogicalName": "iscustomizable"
    }
}

Я могу отфильтровать JSON в Java, но я бы предпочел сначала отфильтровать OData, чтобы получить это единственное поле Value.

try {
    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder()
            .url("https://myorg.api.crm.dynamics.com/api/data/v9.0/GlobalOptionSetDefinitions%28" +
                    optionSetGuidString +
                    "%29/Microsoft.Dynamics.CRM.OptionSetMetadata/Options")
            .get()
            .addHeader("Authorization", "Bearer " + accessToken)
            .build();

    Response response = client.newCall(request).execute();
    String dataReturnedFromGetOptions = response.body().string();

    JSONObject json = new JSONObject(dataReturnedFromGetOptions);
    JSONArray jsonArray = (JSONArray) json.get("value");
    JSONObject jsonObject = (JSONObject) jsonArray.get(jsonArray.length() - 1);
    previousValue = jsonObject.getInt("Value");
}
catch (IOException e) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...