首页 > 解决方案 > 获取 OData 选项集值和名称

问题描述

我正在使用 odata api,现在我在一个实体上有一个属性,它是一个选项选择,例如:

属性名称是:status 值是:1, 2, 3 名称:done, progress, new

问题是当我使用邮递员获取元数据时,我得到的所有字段“状态”都是整数类型。

问题我如何从元数据中获取选项名称和值,以便我得到值和名称作为响应?

目前我得到这个:

  <Property Name="status" Type="Edm.Int32">
     <Annotation Term="Org.OData.Core.V1.Description" String="" />
  </Property>

但我想得到响应的值和名称?

标签: odatadynamics-crmmicrosoft-dynamics

解决方案


这可以大大简化,假设您想要的只是 int 值和实体的特定选项集属性的名称:

GET [Organization URI]/api/data/v8.2/EntityDefinitions(LogicalName='contact')/Attributes(LogicalName='status')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet($select=Options),GlobalOptionSet($select=Options)

is 只是为了$select=LogicalName不返回属性的所有其他元数据,并且$expand=OptionSet($select=Options)is 用于本地选项集,而GlobalOptionSet($select=Options)is 用于全局。如果你知道它是什么类型,你可以跳过另一个,但是如果你把这个逻辑放在一个共享库中(你不是吗?)那么添加两者都不会受到伤害:

{
   "@odata.context":"http://YourOrg.com/YourInstance/api/data/v8.2/$metadata#EntityDefinitions('new_entity')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,OptionSet,GlobalOptionSet,OptionSet(Options),GlobalOptionSet(Options))/$entity",
   "LogicalName":"new_familyshortname",
   "MetadataId":"dc11c01f-b6bd-4664-82d0-3a521841c1f5",
   "OptionSet@odata.context":"http://YourOrg.com/YourInstance/api/data/v8.2/$metadata#EntityDefinitions('new_entity')/Attributes(dc11c01f-b6bd-4664-82d0-3a521841c1f5)/Microsoft.Dynamics.CRM.PicklistAttributeMetadata/OptionSet(Options)/$entity",
   "OptionSet":null,
   "GlobalOptionSet":{
      "@odata.type":"#Microsoft.Dynamics.CRM.OptionSetMetadata",
      "Options":[
         {
            "Value":117280000,
            "Label":{
               "LocalizedLabels":[
                  {
                     "Label":"English Value 1",
                     "LanguageCode":1033,
                     "IsManaged":true,
                     "MetadataId":"3cb6bbd5-796f-e111-8cf3-3cd92b023782",
                     "HasChanged":null
                  },
                  {
                     "Label":"French Value 1",
                     "LanguageCode":1036,
                     "IsManaged":false,
                     "MetadataId":"d88be67d-4a7d-e411-8890-0050569f1654",
                     "HasChanged":null
                  }
               ],
               "UserLocalizedLabel":{
                  "Label":"English Value 1",
                  "LanguageCode":1033,
                  "IsManaged":true,
                  "MetadataId":"3cb6bbd5-796f-e111-8cf3-3cd92b023782",
                  "HasChanged":null
               }
            },
            "Description":{
               "LocalizedLabels":[
                  {
                     "Label":"",
                     "LanguageCode":1033,
                     "IsManaged":true,
                     "MetadataId":"3db6bbd5-796f-e111-8cf3-3cd92b023782",
                     "HasChanged":null
                  }
               ],
               "UserLocalizedLabel":{
                  "Label":"",
                  "LanguageCode":1033,
                  "IsManaged":true,
                  "MetadataId":"3db6bbd5-796f-e111-8cf3-3cd92b023782",
                  "HasChanged":null
               }
            },
            "Color":null,
            "IsManaged":true,
            "MetadataId":null,
            "HasChanged":null
         }, 
         ... MORE ...
      ],
      "MetadataId":"dcbbe460-bedb-4985-9a17-2f3dbc637594"
   }
}

推荐阅读