我正在发送插入的 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
请注明您使用的框架