前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Salesforce JSON应用(二) 反序列化deserializeUntyped方法,序列化serialize方法

Salesforce JSON应用(二) 反序列化deserializeUntyped方法,序列化serialize方法

原创
作者头像
repick
发布2022-09-24 19:49:50
发布2022-09-24 19:49:50
38910
代码可运行
举报
文章被收录于专栏:SalesforceSalesforce
运行总次数:0
代码可运行

1.反序列化

现有映射式Json格式数据存储在项目【SYS_ApprovalJson__c】中,根据检索结果进行反序列化处理后查看内容。

代码语言:javascript
代码运行次数:0
复制
[{"Datetime":"2022-05-28T08:34:15.000Z","HQ__c":["01"],"Office__c":["01"],"Store__c":["01B1"],"Rank__c":["S"]}, {"Datetime":"2022-08-31T12:17:52.000Z","HQ__c":["01","0A"],"Office__c":["01","0A"],"Store__c":["01B1","0AE0"],"Rank__c":["A","B"]}]

在Apex中使用deserializeUntyped方法反序列化处理,查看具体内容。

代码语言:javascript
代码运行次数:0
复制
public with sharing class JsonParseringClass {
    /**Opportunity Prefix*/
    private static final String SOBJECT_TYPE_PREFIX_OPPORTUNITY
                        = Schema.SObjectType.Opportunity.getKeyPrefix();
    public JsonParseringClass() {
        Project__c projectItem =  [SELECT Id,SYS_ApprovalJson__c FROM Project__c WHERE Id = 'a025g00000AJaWUAA1'];
        if (projectItem.SYS_ApprovalJson__c != null && projectItem.SYS_ApprovalJson__c.startsWith('[') && projectItem.SYS_ApprovalJson__c.endsWith(']')) {
            List<Object> useAppListJson = (List<Object>)JSON.deserializeUntyped(projectItem.SYS_ApprovalJson__c);
            system.debug('>>>>>>>>>useAppListJson>>>>>'+useAppListJson);
            if (useAppListJson != null) {
                for (Object listItem : useAppListJson) {
                    if(listItem instanceof Map<String,Object>) {
                        Map<String,Object> mapItem = (Map<String,Object>)listItem;
                        system.debug('>>>>>>>>>mapItem>>>>>'+mapItem);
                    }
                }
            }
        }
    }
}

Log结果

代码语言:javascript
代码运行次数:0
复制
USER_DEBUG [9]|DEBUG|>>>>>>>>>useAppListJson>>>>>
({Datetime=2022-05-28T08:34:15.000Z, HQ__c=(01), 
  Office__c=(01), Rank__c=(S), Store__c=(01B1)},
 {Datetime=2022-08-31T12:17:52.000Z, HQ__c=(01, 0A), 
  Office__c=(01, 0A), Rank__c=(A, B), Store__c=(01B1, 0AE0)})
代码语言:javascript
代码运行次数:0
复制
USER_DEBUG [15]|DEBUG|>>>>>>>>>mapItem>>>>>
{Datetime=2022-05-28T08:34:15.000Z, HQ__c=(01), Office__c=(01), Rank__c=(S), Store__c=(01B1)}
代码语言:javascript
代码运行次数:0
复制
USER_DEBUG [15]|DEBUG|>>>>>>>>>mapItem>>>>>
{Datetime=2022-08-31T12:17:52.000Z, HQ__c=(01, 0A), Office__c=(01, 0A), Rank__c=(A, B), Store__c=(01B1, 0AE0)}

代码语言:javascript
代码运行次数:0
复制
public with sharing class JsonParseringClass {
    /**Opportunity Prefix*/
    private static final String SOBJECT_TYPE_PREFIX_OPPORTUNITY
                        = Schema.SObjectType.Opportunity.getKeyPrefix();
    public JsonParseringClass() {
        Set<String> hQSets = new Set<String>();
        Set<String> officeSets = new Set<String>();
        Set<String> storeSets = new Set<String>();
        Set<String> rankSets = new Set<String>();

        Project__c projectItem =  [SELECT Id,HQ__c, Office__c, Store__c, Rank__c,SYS_ApprovalJson__c FROM Project__c WHERE Id = 'a025g00000AJaWUAA1'];
        if (projectItem.SYS_ApprovalJson__c != null && projectItem.SYS_ApprovalJson__c.startsWith('[') && projectItem.SYS_ApprovalJson__c.endsWith(']')) {
            List<Object> useAppListJson = (List<Object>)JSON.deserializeUntyped(projectItem.SYS_ApprovalJson__c);

            if (useAppListJson != null) {
                for (Object listItem : useAppListJson) {
                    if(listItem instanceof Map<String,Object>) {
                        Map<String,Object> mapItem = (Map<String,Object>)listItem;
                        System.debug('>>>mapItem>>>' + mapItem);
                        for (Object objItem : (List<Object>)mapItem?.get('HQ__c')) {
                            hQSets.add((String)objItem);
                        }
                        for (Object objItem : (List<Object>)mapItem?.get('Office__c')) {
                            officeSets.add((String)objItem);
                        }
                        for (Object objItem : (List<Object>)mapItem?.get('Store__c')) {
                            storeSets.add((String)objItem);
                        }
                        for (Object objItem : (List<Object>)mapItem?.get('Rank__c')) {
                            rankSets.add((String)objItem);
                        }
                    }
                }
            }
        }
        System.debug('>>>hQSets>>>' + hQSets);
        System.debug('>>>officeSets>>>' + officeSets);
        System.debug('>>>storeSets>>>' + storeSets);
        System.debug('>>>rankSets>>>' + rankSets);
   }
}

Log结果

2.序列化

把当前查询结果,序列化转换成Json形式更新到项目【SYS_ApprovalJson__c】中。

代码语言:javascript
代码运行次数:0
复制
public with sharing class JsonParseringClass {
    /**Opportunity Prefix*/
    private static final String SOBJECT_TYPE_PREFIX_OPPORTUNITY
                        = Schema.SObjectType.Opportunity.getKeyPrefix();
    public JsonParseringClass() {
        Set<String> hQSets = new Set<String>();
        Set<String> officeSets = new Set<String>();
        Set<String> storeSets = new Set<String>();
        Set<String> rankSets = new Set<String>();

        List<Object> useAppListJson = new List<Object>();
        Project__c projectItem =  [SELECT Id,HQ__c, Office__c, Store__c, Rank__c,SYS_ApprovalJson__c FROM Project__c WHERE Id = 'a025g00000AJaWUAA1'];
        if (projectItem.SYS_ApprovalJson__c != null && projectItem.SYS_ApprovalJson__c.startsWith('[') && projectItem.SYS_ApprovalJson__c.endsWith(']')) {
            useAppListJson = (List<Object>)JSON.deserializeUntyped(projectItem.SYS_ApprovalJson__c);

            if (useAppListJson != null) {
                for (Object listItem : useAppListJson) {
                    if(listItem instanceof Map<String,Object>) {
                        Map<String,Object> mapItem = (Map<String,Object>)listItem;
                        System.debug('>>>mapItem>>>' + mapItem);
                        for (Object objItem : (List<Object>)mapItem?.get('HQ__c')) {
                            hQSets.add((String)objItem);
                        }
                        for (Object objItem : (List<Object>)mapItem?.get('Office__c')) {
                            officeSets.add((String)objItem);
                        }
                        for (Object objItem : (List<Object>)mapItem?.get('Store__c')) {
                            storeSets.add((String)objItem);
                        }
                        for (Object objItem : (List<Object>)mapItem?.get('Rank__c')) {
                            rankSets.add((String)objItem);
                        }
                    }
                }
            }
        }

        if (projectItem?.HQ__c?.split(';') != null && projectItem?.HQ__c?.split(';').size() > 0) {
            for (String item : projectItem?.HQ__c?.split(';')) {
                hQSets.add(item);

            }
        }
        if (projectItem?.Office__c?.split(';') != null && projectItem?.Office__c?.split(';').size() > 0) {
            for (String item : projectItem?.Office__c?.split(';')) {
                officeSets.add(item);
            }
        }
        if (projectItem?.Store__c?.split(';') != null && projectItem?.Store__c?.split(';').size() > 0) {
            for (String item : projectItem?.Store__c?.split(';')) {
                storeSets.add(item);
            }
        }
        if (projectItem?.Rank__c?.split(';') != null && projectItem?.Rank__c?.split(';').size() > 0) {
            for (String item : projectItem?.Rank__c?.split(';')) {
                rankSets.add(item);
            }
        }
        System.debug('>>>hQSets>>>' + hQSets);
        System.debug('>>>officeSets>>>' + officeSets);
        System.debug('>>>storeSets>>>' + storeSets);
        System.debug('>>>rankSets>>>' + rankSets);

        List<Object> updateTempList = new List<Object>();
        Map<String,Object> mapTempItem = new Map<String,Object>();
        mapTempItem.put('Datetime', Datetime.now().format('yyyy-MM-dd kk:mm:ss.S', 'Asia/Tykyo'));
        mapTempItem.put('HQ__c', projectItem?.HQ__c?.split(';'));
        mapTempItem.put('Office__c', projectItem?.Office__c?.split(';'));
        mapTempItem.put('Store__c', projectItem?.Store__c?.split(';'));
        mapTempItem.put('Rank__c', projectItem?.Rank__c?.split(';'));
        updateTempList.add(mapTempItem);

        useAppListJson.addAll(updateTempList);
        String serializeToJson = JSON.serialize(useAppListJson);
        projectItem.SYS_ApprovalJson__c = serializeToJson;
        update projectItem;
   }
}

项目SYS_ApprovalJson__c 的更新结果

代码语言:javascript
代码运行次数:0
复制
[{"Rank__c":["S"],"Store__c":["01B1"],"Office__c":["01"],"HQ__c":["01"],"Datetime":"2022-05-28T08:34:15.000Z"},{"Rank__c":["A","B"],"Store__c":["01B1","0AE0"],"Office__c":["01","0A"],"HQ__c":["01","0A"],"Datetime":"2022-08-31T12:17:52.000Z"},{"Rank__c":["A","C"],"Store__c":["0CH5"],"Office__c":["01","0A"],"HQ__c":["02","0B"],"Datetime":"2022-09-23 14:32:09.388"}]

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现有映射式Json格式数据存储在项目【SYS_ApprovalJson__c】中,根据检索结果进行反序列化处理后查看内容。
  • 2.序列化
    • 把当前查询结果,序列化转换成Json形式更新到项目【SYS_ApprovalJson__c】中。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档