Я пытаюсь настроить интеграцию REST API для пользовательского Java-приложения с Salesforce. Я следил за учебными пособиями / ресурсами, а именно:
http://www.asagarwal.com/step-by-step-guide-to-get-started-with-salesforce-rest-api-using-java/
Они отлично работают. Мой вопрос касается создания / обновления объекта Salesforce через REST api. Конкретный фрагмент кода для создания соответствующего объекта для создания is- |
//create the JSON object containing the new lead details.
JSONObject lead = new JSONObject();
lead.put("FirstName", "REST API");
lead.put("LastName", "Lead");
lead.put("Company", "asagarwal.com");
И затем есть часть для создания этого довольно обычного HTTP-запроса -
//Construct the objects needed for the request
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(uri);
httpPost.addHeader(oauthHeader);
httpPost.addHeader(prettyPrintHeader);
// The message we are going to post
StringEntity body = new StringEntity(lead.toString(1));
body.setContentType("application/json");
httpPost.setEntity(body);
Мне кажется, что создание json-объекта таким образом требует обслуживания. Это включает в себя прямо сейчас необходимость пройти через весь список полей объекта, который может быть 100, и получить их имя поля. Это кажется действительно утомительным. Есть ли способ получить структуру объекта конкретного объекта Salesforce в java, а затем, возможно, я смогу использовать внешние библиотеки, такие как Jackson и его аннотации, для сериализации объекта в json вместо того, чтобы вручную создавать этот объект json? Я попытался найти это в Интернете, но в настоящее время единственный возможный способ - это получить имена полей и самому построить Java-компонент и сериализовать его в json. Есть ли более чистый способ сделать это, возможно, используя какие-либо возможности Salesforce?




Есть ли у вас возможность настроить службу REST в классе Apex, которому вы можете передать тип объекта как String?
Вы можете написать веб-службу, которая возвращает JSON sObject, используя JSON.serialize () на стороне SF и возвращая его на основе того, что было передано в службу.