Преобразование XML в JSON как в Python, так и в Oracle - PullRequest
0 голосов
/ 25 октября 2018

Впервые в своей жизни я работаю с Python, и у меня возникла проблема, которую я не могу найти, как ее решить, поэтому я постараюсь быть ясным, чтобы объяснить себя как можно лучше и прочитать их комментарии.Я помещаю их в контекст.Я делаю микросервис, который должен возвращать атрибуты объекта.Визуализация микросервиса должна быть в формате JSON.

Я провел несколько тестов (ни один из них для меня не работает).Во-первых, процедура Oracle Store для возврата XML, потому что я хотел бы, чтобы sp-код был более динамичным.Я не знаю, как взять эту выходную переменную и преобразовать ее в JSON внутри самого Oracle.Или, если я не могу, я хотел бы знать, может ли эта выходная переменная быть преобразована в JSON с Python

Другой, который мне не очень нравится, является создание " JSON"форматировать в SP и вернуть varchar этого содержимого.

Второй вариант, когда я генерирую JSON, пакет делает это:

PROCEDURE get_attributes (p_element IN VARCHAR2, p_list OUT CLOB) AS
    str_json_inicial    VARCHAR2(100) := '{';
    str_json_final      VARCHAR2(100) := '"}';
    str_json1           VARCHAR2(100) := '"role":"';
    str_json2           VARCHAR2(100) := '","identification":"';
    str_json3           VARCHAR2(100) := '","class":"';
    str_json4           VARCHAR2(100) := '","country":"';
    str_json5           VARCHAR2(100) := '","stateOrProvince":"';
    str_json6           VARCHAR2(100) := '","city":"';
    str_json7           VARCHAR2(100) := '","locality":"';
    str_json8           VARCHAR2(100) := '","streetName":"';
    str_json9           VARCHAR2(100) := '","streetNr":"';
    str_json10          VARCHAR2(100) := '","x":"';
    str_json11          VARCHAR2(100) := '","y":"';
    respuesta           CLOB;
BEGIN
    select 
        TO_CLOB(str_json_inicial
        || str_json1
        || 'completarRol' 
        || str_json2
        || id_equipo_gis 
        || str_json3
        || 'completarClass' 
        || str_json4
        || pais 
        || str_json5
        || provincia 
        || str_json6
        || partido 
        || str_json7
        || localidad 
        || str_json8
        || calle 
        || str_json9
        || altura 
        || str_json10
        || poste_x 
        || str_json11
        || poste_y 
        || str_json_final)
        into p_list
    from xxy_osf_equ_equipos
       where id_equipo_gis = p_element;
    EXCEPTION WHEN NO_DATA_FOUND then
    BEGIN
        p_list := to_clob('{}');
    END;
    WHEN OTHERS then
    BEGIN
        p_list := to_clob('{ERROR}');
    END;
END get_attributes;

В обоих случаях у меня нетИдея, как заставить это работать.

Я дам вам несколько примеров строк Python первого сервиса, который я сделал, который работает для меня, но это очень сложный код.

listOutput = cur.var(cx_Oracle.CURSOR)
l = cur.callproc('relationships.get_relationships', (elementId, listOutput))
cur = database.db.cursor()
result = []
for cur in listOutput.getvalue().fetchall():
    result.append({
                  'identification': cur[0],
                  'elementRole': cur[1],
                  'direction': cur[2],})
return result

гдеlistOutput - это переменная типа курсора oracle, и я размещаю теги JSON.

У кого-нибудь есть идеи, предложения или рекомендации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...