You need to sign in to do that
Don't have an account?
how to return JSON for Account ad respective contacts
Hi Friends,
How to get all accounts and recpective contacts in JSON format? Also I need to return Product name from a custom object and this product name field is a text field and its containing products name. But problem I m facing is its returning all duplicate products also but I need unique one. Suppose I have hundred records so product name can be multiple time. Please check the code and let me know the changes i need in code
Code
*********************
public static string AccountContactProductList(){
SalesAIRecommendations.Response item = new SalesAIRecommendations.Response();
item.status = 'SUCCESS';
item.code = 1000;
item.message = 'SUCCESS';
item.mappingId = 0;
item.sessionToken = null;
item.userType = null;
item.name = null;
item.emailId = null;
item.data1 = new List<SalesAIRecommendations.Data1>();
SalesAIRecommendations.Data1 data1 = new SalesAIRecommendations.Data1();
data1.Accounts = new List<SalesAIRecommendations.Accounts>();
set<Id> accountids= new set<Id>();
List<Account> accountlist= [select Id,Name FROM Account];
for(Account a : accountlist){
accountids.add(a.Id);
}
List<Contact> contactlist= [select Id,account.id, account.name, Name From contact WHERE AccountId In:accountids];
for(contact con:contactlist ){
SalesAIRecommendations.Accounts Accounts = new SalesAIRecommendations.Accounts();
Accounts.accountId = con.account.id;
Accounts.accountName = con.account.name;
data1.Accounts.add(Accounts);
}
data1.Contacts = new List<SalesAIRecommendations.Contacts>();
for(contact con:contactlist ){
SalesAIRecommendations.Contacts Contacts = new SalesAIRecommendations.Contacts();
Contacts.contactId = con.Id;
Contacts.contactName = con.Name;
data1.Contacts.add(Contacts);
}
data1.Recommendation = new Set<SalesAIRecommendations.Recommendation>();
Set<Recommendation__c> Product_RecommendationList = new Set<Recommendation__c>([SELECT Product_Recommendation__c FROM Recommendation__c ORDER BY Product_Recommendation__c ASC]);
system.debug('ProductsList#######:' +Product_RecommendationList);
for (Recommendation__c PR :Product_RecommendationList){
SalesAIRecommendations.Recommendation Product_Recom = new SalesAIRecommendations.Recommendation();
Product_Recom.Product_Recommendation = PR.Product_Recommendation__c;
data1.Recommendation.add(Product_Recom);
}
item.data1.add(data1);
system.debug('{"Account_Contact_List":' + JSON.serialize(item) + '}');
return '{"Account_Contact_List":' + JSON.serialize(item) + '}';
}
How to get all accounts and recpective contacts in JSON format? Also I need to return Product name from a custom object and this product name field is a text field and its containing products name. But problem I m facing is its returning all duplicate products also but I need unique one. Suppose I have hundred records so product name can be multiple time. Please check the code and let me know the changes i need in code
Code
*********************
public static string AccountContactProductList(){
SalesAIRecommendations.Response item = new SalesAIRecommendations.Response();
item.status = 'SUCCESS';
item.code = 1000;
item.message = 'SUCCESS';
item.mappingId = 0;
item.sessionToken = null;
item.userType = null;
item.name = null;
item.emailId = null;
item.data1 = new List<SalesAIRecommendations.Data1>();
SalesAIRecommendations.Data1 data1 = new SalesAIRecommendations.Data1();
data1.Accounts = new List<SalesAIRecommendations.Accounts>();
set<Id> accountids= new set<Id>();
List<Account> accountlist= [select Id,Name FROM Account];
for(Account a : accountlist){
accountids.add(a.Id);
}
List<Contact> contactlist= [select Id,account.id, account.name, Name From contact WHERE AccountId In:accountids];
for(contact con:contactlist ){
SalesAIRecommendations.Accounts Accounts = new SalesAIRecommendations.Accounts();
Accounts.accountId = con.account.id;
Accounts.accountName = con.account.name;
data1.Accounts.add(Accounts);
}
data1.Contacts = new List<SalesAIRecommendations.Contacts>();
for(contact con:contactlist ){
SalesAIRecommendations.Contacts Contacts = new SalesAIRecommendations.Contacts();
Contacts.contactId = con.Id;
Contacts.contactName = con.Name;
data1.Contacts.add(Contacts);
}
data1.Recommendation = new Set<SalesAIRecommendations.Recommendation>();
Set<Recommendation__c> Product_RecommendationList = new Set<Recommendation__c>([SELECT Product_Recommendation__c FROM Recommendation__c ORDER BY Product_Recommendation__c ASC]);
system.debug('ProductsList#######:' +Product_RecommendationList);
for (Recommendation__c PR :Product_RecommendationList){
SalesAIRecommendations.Recommendation Product_Recom = new SalesAIRecommendations.Recommendation();
Product_Recom.Product_Recommendation = PR.Product_Recommendation__c;
data1.Recommendation.add(Product_Recom);
}
item.data1.add(data1);
system.debug('{"Account_Contact_List":' + JSON.serialize(item) + '}');
return '{"Account_Contact_List":' + JSON.serialize(item) + '}';
}
Hi Rajan,
Looks like there are two questions in the same post.
I will try to answer the question related to Product.
You can use Aggregates for querying unique product names from your custom object.
List<AggregateResult> prodList = [select Product_Recommendation__c from Recommendation__c where Product_Recommendation__c <> null group by Product_Recommendation__c order by Product_Recommendation__c ASC ];
Set<String> Product_RecommendationList = new Set<String>();
For(AggregateResult aggR : prodList)
{
recommendationList.add((String)aggR.get('Type'));
}
Use the Set in the JSON construct for Products. Hope this helps.
See the below idea link, the DISTINCT or UNIQUE keyword is not yet available in Salesforce.
https://success.salesforce.com/ideaView?id=08730000000Brr2AAC
Thanks,
Chellappa