我在Java中有一个简单的SOQL查询,用于提取Salesforce标准对象,如下所示-

String soqlQuery = "SELECT FirstName, LastName FROM Contact";

QueryResult qr = connection.query(soqlQuery);

我想获取对象字段的数据类型。

最佳答案

我在下面写了一个小函数,它将提供电话字段的列表及其在Salesforce ORG的自定义或标准对象中显示的标签。我希望这可以帮助您编写代码的业务逻辑。

 public list<String> getFieldsForSelectedObject(){
   selectedPhoneNumber = ''; //to reset home number field
   list<String> fieldsName = new list<String>();
   selectedObject = 'Object Name' // This should have the object name for which we want to get the fields type
   schemaMap = Schema.getGlobalDescribe(); //Populating the schema map
   try{
       if(selectedObject != null || selectedObject != '' || selectedObject != '--Select Object--'){
            Map<String, Schema.SObjectField> fieldMap = schemaMap.get(selectedObject).getDescribe().fields.getMap();
            for(Schema.SObjectField sfield : fieldMap.Values()){
                schema.describefieldresult dfield = sfield.getDescribe();
                schema.Displaytype disfield= dfield.getType();
                system.debug('#######'  + dfield );
                if(dfield.getType() == Schema.displayType.Phone){// Over here I am trying to findout all the PHONE Type fields in the object(Both Custom/Standard)
                    fieldsName.add('Name:'+dfield.getName() +'  Label:'+ dfield.getLabel ());
                }
            }
        }
    }catch(Exception ex){
        apexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR,'There is no Phone or Fax Field Exist for selected Object!'));
    }
    return fieldsName;
}


示例输出字符串列表::

名称:Home_Phone__c标签:家庭电话
名称:Office_Phone__c标签:Office Phone

10-06 04:55