Моя цель - создать запрос 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) { }