JavaScript JSON в Pentaho - объединяет объекты JSON в существующий документ JSON на основе ключей - PullRequest
0 голосов
/ 04 октября 2018

По сути, я пытаюсь создать документ Json, все части которого разбиты на более мелкие части Json, все строки содержат ключи, необходимые для вставки меньших битов Json в правильную структуру json.

Моя проблема начинается с того, что я почти ничего не знаю о JavaScript.Поэтому я должен был бы выучить JavaScript с нуля (уже делаю), поэтому я опишу как могу проблему и то, чего я хочу достичь.

Проблемы: в каждом посте в Пентахо / Джсон я вижу жестко закодированный(Как и Этот ответ, который полезен, но опять же, жестко закодированное количество полей) JavaScript для создания предварительно сформированной структуры Json, мне нужен способ вставки / создания динамически создаваемой информации в JsonСостав.И для этого также нужны Nested Structures.

Итак, при запуске я бы собрал всю структуру Flat Json, что можно легко сделать с помощью шага вывода Json, , так как он выводит построенные объекты Json,Сами объекты могут быть построены динамически, а затем просто объединены (Опять же, я не знаю, возможно ли это).После того, как плоская часть сделана, наступает часть объединения других объектов внутри правильной структуры, некоторые из них являются просто более простыми объектами, другие являются массивами объектов (вложенная часть).

Вот где мне нужно подтверждение откто-то, кто понимает эту часть, о том, что можно достичь в Pentaho JavaScript, или единственный способ использовать Pentaho - это создавать жестко закодированные структуры.Ниже я покажу в примерах Json, что я хочу.

Это будет пример плоского JSON:

  {
        "Apolices": [{
                "Apolice": {
                    "APO_numero_apolice": "1321635113",
                    "APO_ramo": "312",
                    "APO_data_proposta": "22-05-2018",
                    "APO_valor_desconto": 0.0,
                    "APO_valor_liquido": 1550.39,
                    "APO_cod_parceiro_negocio": "1000",
                    "APO_inicio_vigencia": "22-05-2018",
                    "APO_status_apolice": "EMITIDA"
                }
            },
            {
                "Apolice": {
                    "APO_proposta": "3212121",
                    "APO_data_registro": "08-08-2018",
                    "APO_numero_apolice": "7891321498",
                    "APO_ramo": "515",
                    "APO_data_proposta": "22-03-2018",
                    "APO_valor_desconto": 0.0,
                    "APO_valor_liquido": 2150.72,
                    "APO_cod_parceiro_negocio": "7548151100",
                    "APO_inicio_vigencia": "22-07-2018",
                    "APO_status_apolice": "EMITIDA",
                    "APO_produto": null,
                    "APO_codigo_corretor": "812182",
                    "APO_fim_vigencia": "22-05-2019",
                    "APO_valor_bruto": 2320.8,
                    "APO_percentual_comissao": 19,
                    "APO_iof": null
                }
            }
        ]
    }

Затем в ходе указанной реализации, желаемый результат будет выглядеть примерно так:

  {
        "Apolices": [{
                "Apolice": {
                    "APO_numero_apolice": "1321635113",
                    "APO_ramo": "312",
                    "APO_data_proposta": "22-05-2018",
                    "APO_valor_desconto": 0.0,
                    "APO_valor_liquido": 1550.39,
                    "APO_cod_parceiro_negocio": "1000",
                    "APO_inicio_vigencia": "22-05-2018",
                    "APO_status_apolice": "EMITIDA"
                },
                "Item": {
                    "ITE_ano_fabricacao": "2001",
                    "ITE_modelo": "FOCUS SEDAN GHIA 2.0 MPI 16V 4P",
                    "ITE_ano_modelo": "2001",
                    "Cobertura": [{
                            "COB_cod_cobertura": "21",
                            "COB_valor_importancia": "50000",
                            "COB_valor_premio": "415,71",
                            "COB_cobertura": "RCF-V - Danos Materiais"
                        },
                        {
                            "COB_cod_cobertura": "17",
                            "COB_valor_importancia": "16712",
                            "COB_valor_premio": "1165,96",
                            "COB_cobertura": "Colisão,Incêndio e Roubo\/Furto"
                        }
                    ]
                }
            },
            {
                "Apolice": {
                    "APO_proposta": "3212121",
                    "APO_data_registro": "08-08-2018",
                    "APO_numero_apolice": "7891321498",
                    "APO_ramo": "515",
                    "APO_data_proposta": "22-03-2018",
                    "APO_valor_desconto": 0.0,
                    "APO_valor_liquido": 2150.72,
                    "APO_cod_parceiro_negocio": "7548151100",
                    "APO_inicio_vigencia": "22-07-2018",
                    "APO_status_apolice": "EMITIDA",
                    "APO_produto": null,
                    "APO_codigo_corretor": "812182",
                    "APO_fim_vigencia": "22-05-2019",
                    "APO_valor_bruto": 2320.8,
                    "APO_percentual_comissao": 19,
                    "APO_iof": null
                }
            }
        ]
    }

Объекты Json "Item" и "Cobertura" и другие будут представлять собой уже построенные объекты Json с необходимымиключи для вставки всего объекта в правильное положение структуры.

Я уже почти не программировал, поскольку я все еще изучаю JavaScript, но я уже знаю, что JavaScript в Пентахо несколько ограничен вресурсы, поэтому я спрашиваю заранее, возможно ли это даже в Пентахо / Чайник

1 Ответ

0 голосов
/ 05 октября 2018

Не бойтесь ограничений ресурсов для Javascript в PDI.Он использует официальный Rhino OpenSource проект, который на 100% совместим с ES6.

Конечно, динамическая природа JS делает его немного медленнее, но я не думаю, что разница будетзначительный, если у вас нет непрерывного потока ввода миллионов в минуту.

...