Стандартный формат для указания отображения полей - PullRequest
2 голосов
/ 23 апреля 2019

Мы пытаемся создать единый интерфейс, который может быть интегрирован с несколькими системами.

Следовательно, нам нужен способ указать сопоставления стандартных полей для разных систем.

Пример:

Interface1 has the following fields: A, B, C

Interface2 has the following fields: P, Q, R

We need to map fields: A -> Q, B -> P and C -> R (just an example)

Мы можем просто создать JSON таких сопоставлений и следовать нашему собственному соглашению, но хотели проверить, существуют ли какие-либо стандартные форматы / инструменты с открытым исходным кодом для указания или упрощения сопоставленияполя от источника до места назначения?

1 Ответ

1 голос
/ 25 апреля 2019

Предполагается, что вы пытаетесь преобразовать:

Response from interface 1  = { "A": "value1", "B": "value2", "C": "value3" }

в:

Response from interface 2  = { "Q": "value1", "P": "value2", "R": "value3" }

Вы можете использовать любую библиотеку, которая выполняет преобразования JSON, например this или это .Например, вы можете определить свое преобразование следующим образом:

var template = {
    Q: '$.A',
    P: '$.B',
    R: '$.C'
};

var input = { "A": "value1", "B": "value2", "C": "value3" };
var output = jsonPathObjectTransform(input, template);

// -> output = { "Q": "value1", "P": "value2", "R": "value3" }

Использование Java с Толчок (я не смог проверить это, но это общая идея):

String input = "{\n" +
    "  \"A\": \"value1\",\n" +
    "  \"B\": \"value2\",\n" +
    "  \"C\": \"value3\"\n" +
    "}"

String spec = "[\n" +
    "  {\n" +
    "    \"operation\": \"shift\",\n" +
    "    \"spec\": {\n" +
    "      \"A\": \"Q\",\n" +
    "      \"B\": \"P\",\n" +
    "      \"C\": \"R\"\n" +
    "    }\n" +
    "  }\n" +
    "]\n"

Chainr chainr = JsonUtils.jsonToList(spec);
Object output = chainr.transform(input);

// -> output = { "Q": "value1", "P": "value2", "R": "value3" }
...