我编写了一个用于发送自定义响应的类,但我没有在杰森数据中获得确切的请求正文

问题描述 投票:0回答:1

我正在发送插入的 ID 和我在请求正文中获取的有效负载作为响应,我正在获取 id,但请求正文作为类中提到的每个字段来

示例

请求正文

{

"ObjectName": "Program",

        "Data_db_id ": "659d8f6c1a4c215a5f19bbf6",

        "Program_Key": "10",

        "UniversityID": "a0H1s00000AIFSGEA5",

       "Program_Name": "test3",

         "Active":true

    }

{

"ObjectName": "Program",

       "Data_db_id ": "659d8f6c1a4c215a5f19bbf6",

        "Program_Key": "10",

        "UniversityID": "a0H1s00000AIFSGEA5",

       "Program_Name": "test1",

       "Active":true

    }

回应 {“insertedRecords”:[{“id”:[“a0J1s000003AhuiEAC”,“a0J1s000003AhujEAC”],“数据”:{“网络研讨会”:null,“UniversityID”:“a0H1s00000AIFSGEA5”,“University_Name”:null,“UniqueId”: null,"Unarchive_date":null,"ProgramID":null,"Program_Name":"test3","Program_Key":"10","Program_Degree":null,"Program_Category":null,"OpportunityID":null,"ObjectName ":"计划","名称":null,"手机":null,"Match_Score":null,"Is_Recommended":null,"Is_Partner":null,"Is_Only_FR":null,"Invite_Status":null,"Funding_Gap_INR ":null,"FSContactCreaterName":null,"学位":null,"Data_db_id":null,"国家":null,"Chance_Score":null,"类别":null,"Archived_Date":null,"活动": true}},{"id":["a0J1s000003AhuiEAC","a0J1s000003AhujEAC"],"data":{"网络研讨会":null,"UniversityID":"a0H1s00000AIFSGEA5","University_Name":null,"UniqueId":null, “Unarchive_date”:null,“ProgramID”:null,“Program_Name”:“test1”,“Program_Key”:“10”,“Program_Degree”:null,“Program_Category”:null,“OpportunityID”:null,“ObjectName”: "计划","名称":null,"手机":null,"Match_Score":null,"Is_Recommended":null,"Is_Partner":null,"Is_Only_FR":null,"Invite_Status":null,"Funding_Gap_INR": null,"FSContactCreaterName":null,"学位":null,"Data_db_id":null,"国家/地区":null,"Chance_Score":null,"类别":null,"Archived_Date":null,"Active":true} }

这是我的代码

public class InsertAccountServiceInterface {

    RestRequest request = RestContext.request;

    RestResponse res = RestContext.response;

    public List<InsertAccJason.InsertAccRequest> convertJSONDataToOppList(String requestBody) {

        List<InsertAccJason.InsertAccRequest> tataTeleCallDataList = new List<InsertAccJason.InsertAccRequest>();

        try {

            JSONParser parser = JSON.createParser(requestBody);

            while (parser.nextToken() != null) {

                if (parser.getCurrentToken() == JSONToken.START_OBJECT) {

                    InsertAccJason.InsertAccRequest accRequest = (InsertAccJason.InsertAccRequest) parser.readValueAs(InsertAccJason.InsertAccRequest.class);

                    string s = JSON.serialize(accRequest);

                    system.debug('s'+s);

                    parser.skipChildren();

                    InsertAccJason.InsertAccRequest jsonData = new InsertAccJason.InsertAccRequest();

                    jsonData = (InsertAccJason.InsertAccRequest)JSON.deserialize(s, InsertAccJason.InsertAccRequest.Class);

                    tataTeleCallDataList.add(jsonData);

                    System.debug('tataTeleCallDataList: ' + tataTeleCallDataList);

                }

            }

        } catch (Exception ex) {

            System.debug('Error: ' + ex.getMessage());

        }

        return tataTeleCallDataList;

    }

    public Map<String, List<Id>> insertAccounts(List<InsertAccJason.InsertAccRequest> accountDataList) {

        Map<String, List<Id>> insertedIdsMap = new Map<String, List<Id>>();

        List<Jn_University_Program__c> insertedUniversityPrograms = new List<Jn_University_Program__c>();

        List<Program__c> insertedPrograms = new List<Program__c>();

        for (InsertAccJason.InsertAccRequest accData : accountDataList) {

            if (accData.ObjectName == 'Jn_University_Program') {

                Jn_University_Program__c acc = new Jn_University_Program__c();

                If( accData.Webinar != null){

                    acc.Webinar__c = accData.Webinar;

                    }

                 If(accData.Invite_Status != null){

                acc.Invite_Status__c = accData.Invite_Status;

                 }

                 If(accData.University_Name != null){

                     acc.University_Name__c = accData.University_Name;

                 }

                If(accData.Country != null){

                acc.Country__c = accData.Country;

                }

                  If(accData.Is_Partner != null){

                      acc.Is_Partner__c = accData.Is_Partner;}

                insertedUniversityPrograms.add(acc);

            }

            if (accData.ObjectName == 'Program') {

                Program__c program = new Program__c();

                 If(accData.Active != null){

                     program.Active__c = accData.Active;}

                  If(accData.Category != null){

                      program.Category__c = accData.Category;

                  }

                insertedPrograms.add(program);

            }

        }

        // Insert records and get their IDs

        if (!insertedUniversityPrograms.isEmpty()) {

            insert insertedUniversityPrograms;

            insertedIdsMap.put('Jn_University_Program', getInsertedIds(insertedUniversityPrograms));

        }

        if (!insertedPrograms.isEmpty()) {

            insert insertedPrograms;

            insertedIdsMap.put('Program', getInsertedIds(insertedPrograms));

        }

        return insertedIdsMap;

    }

    // Method to get the IDs of the inserted records

    private List<Id> getInsertedIds(List<sObject> records) {

        List<Id> insertedIds = new List<Id>();

        for (sObject record : records) {

            insertedIds.add(record.Id);

        }

        return insertedIds;

    }

}

Controller

@RestResource(urlMapping='/insertAccounts')

global class InsertAccountService {

    @HttpPost

    global static void doPost() {

        try {

            RestRequest request = RestContext.request;

            InsertAccountServiceInterface serviceInterface = new InsertAccountServiceInterface();

            List<InsertAccJason.InsertAccRequest> accountDataList = serviceInterface.convertJSONDataToOppList(request.requestBody.toString());

            if (!accountDataList.isEmpty()) {

                Map<String, List<Id>> insertedRecords = serviceInterface.insertAccounts(accountDataList);

                List<Map<String, Object>> insertedRecordsWithRequest = new List<Map<String, Object>>();

                for (InsertAccJason.InsertAccRequest accData : accountDataList) {

                    Map<String, Object> recordDetails = new Map<String, Object>();

                    recordDetails.put('data', accData);

                    recordDetails.put('id', insertedRecords.get(accData.ObjectName));

                    insertedRecordsWithRequest.add(recordDetails);

                }

                Map<String, Object> responseBody = new Map<String, Object>();

                responseBody.put('success', true);

                responseBody.put('message', 'Request received successfully');

                responseBody.put('insertedRecords', insertedRecordsWithRequest);

                RestContext.response.statusCode = 201;

                RestContext.response.responseBody = Blob.valueOf(JSON.serialize(responseBody));

            } else {

                RestContext.response.statusCode = 400;

                RestContext.response.responseBody = Blob.valueOf('{"success": false, "message": "No data in the request body"}');

            }

        } catch (Exception ex) {

            System.debug('Error: ' + ex.getMessage());

            RestContext.response.statusCode = 500;

            RestContext.response.responseBody = Blob.valueOf('{"success": false, "message": "An error occurred"}');

        }

    }

}

public class InsertAccJason {

    public class InsertAccRequest {

//SR Recommnentation Data

    Public string ObjectName { get; set; }

    public String Name { get; set; }

    public String FSContactCreaterName { get; set; }

    public String Webinar { get; set; }

    public String University_Name { get; set; }

    public String Country { get; set; }

    public String Program_Category { get; set; }

    public String Program_Degree { get; set; }

    public String Program_Name { get; set; }

}

我想在响应中发送特定的请求正文,同时获取我提到的整个 jason 数据,我也尝试了嵌套 json

rest salesforce integration apex
1个回答
0
投票

请注明您使用的框架

© www.soinside.com 2019 - 2024. All rights reserved.