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

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

原创
作者头像
repick
发布2022-09-24 19:49:50
3801
发布2022-09-24 19:49:50
举报
文章被收录于专栏:Salesforce

1.反序列化

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

代码语言:javascript
复制
[{"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
复制
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
复制
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
复制
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
复制
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
复制
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
复制
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
复制
[{"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】中。
    相关产品与服务
    文件存储
    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档