Salesforce 如何从特定sobject的字段标签中找到字段的API名称?

Salesforce 如何从特定sobject的字段标签中找到字段的API名称?,salesforce,Salesforce,如何从特定sobject的字段标签中查找字段的API名称 在salesforce中找到字段api名称是非常糟糕的,这确实是一个微不足道的问题,许多开发人员在项目中发现这是一个困难的问题 将此处作为易于搜索的代码段放置。以下是根据对象标签查找字段api名称的代码段 public static String getMyAPIName(String objectName, String fieldLabel ) { SObjectType type = Schema.getGloba

如何从特定sobject的字段标签中查找字段的API名称

在salesforce中找到字段api名称是非常糟糕的,这确实是一个微不足道的问题,许多开发人员在项目中发现这是一个困难的问题


将此处作为易于搜索的代码段放置。

以下是根据对象标签查找字段api名称的代码段

public static String getMyAPIName(String objectName, String fieldLabel ) {
    
    SObjectType type = Schema.getGlobalDescribe().get(objectName);
    Map<String,Schema.SObjectField> mfields = type.getDescribe().fields.getMap();
    
    for(String strField : mfields.keySet())
    {
        SObjectField fl = mfields.get(strField);
        if(fieldLabel == fl.getDescribe().getlabel())
        {
            return strField;
        }
    }
    
    return '';
}
public静态字符串getMyAPIName(字符串objectName,字符串fieldLabel){
SObjectType type=Schema.getGlobalDescripte().get(objectName);
Map mfields=type.getDescripte().fields.getMap();
for(字符串strField:mfields.keySet())
{
SObjectField fl=mfields.get(strField);
如果(fieldLabel==fl.GetDescripte().getlabel())
{
返回strField;
}
}
返回“”;
}

输出“ParentId”很好,没有描述和循环

这种方法很容易在单个语句中找到字段,但这里我们必须确定SOQL查询,但在我的回答中,我们不必使用SOQL。我检查了这两个代码段的执行情况,发现所有的统计数据都是相同的,唯一的区别是,在这种方法中,我们至少需要进行一次SOQL调用。1查询可以接受,特别是如果您使用平台缓存之类的东西来存储结果。“描述”过去是昂贵的操作(它们仍然是,但SF决定不将它们计入CPU时间限制)。运行查询或RESTAPI调用比查找这样的代码片段更简单。旧的SF ORG可以很容易地达到关键对象上800个自定义字段的限制,然后循环就变得不平凡了。更有趣的是,如果你有字段标签,但没有对象名称-祝你好运在所有对象上运行descripe,所有字段。。。不同的工具满足不同的需求
SELECT EntityDefinition.QualifiedApiName, QualifiedApiName, Label
FROM FieldDefinition 
WHERE EntityDefinition.QualifiedApiName = 'Account' AND Label = 'Parent Account'