Генерация кода по заданной структуре JSON API

Я не уверен, отностися ли это полностью к SuiteCRM или к JSON API. Вероятно, это что-то посередине.

Есть ресурс с название Lead, чья структура целиком доступна, если выполнить такой запрос:

GET {{crm_base_url}}/api/v8/modules/Leads/meta/attributes

Это дает такой ответ:

{
    "meta": {
        "Leads": {
            "attributes": {
                "id": {
                    "name": "id",
                    "vname": "LBL_ID",
                    "type": "id",
                    "required": true,
                    "reportable": true,
                    "comment": "Unique identifier",
                    "inline_edit": false
                },
                "first_name": {
                    "name": "first_name",
                    "vname": "LBL_FIRST_NAME",
                    "type": "varchar",
                    "len": "100",
                    "unified_search": true,
                    "full_text_search": {
                        "boost": 3
                    },
                    "comment": "First name of the contact",
                    "merge_filter": "selected"
                },
                ...

Я хочу использовать одну из JSON API библиотек. Допустим, Java реализацию. Тогда я должен написать такой код:

@JsonApiResource(type = "Leads")
public class Lead {

    @JsonApiId
    private UUID id;

    @JsonProperty("first_name")
    private String firstName;
    ...

Как я могу избежать ручной работы и сгенерировать код таких классов автоматически?

Неважно какой язык программирования использовать, в результате должен получится класс с полями.

Теоретически должна вот эта штука помочь.
Если не секрет, а зачем Вы в Java тащите дефинишн модуля?

1 Like

Спасибо за ответ!
Однако, JSON API - это не просто JSON или JSON Schema. Вот его спецификация - http://jsonapi.org/

Мне нужна модель предметной области, как раз такая, которая уже описана модулями SuiteCRM. Я бы хотел переиспользовать ее в Java коде, т.к. вся
имеющаяся инфраструктра именно на Java.

А если генерить классы непосредственно какой-нибудь тулзой прямо из базы данных? Их есть же в Java!

Тогда пропадает возможность пользоваться RESTful API https://docs.suitecrm.com/developer/api/version-8/json-api/
SuiteCRM тоже нужен.
Генератор нужен потому что модули в SuiteCRM с новыми версиями тоже эволюционируют и нужно поддерживать классы в актальном состоянии.