我有生以来第一次使用Python,但遇到一个我找不到解决方法的问题,因此我会尽力清楚地尽可能地向自己解释并阅读他们的评论。 我把它们放在上下文中。我正在做一个微服务,应该返回一个对象的属性。 微服务可视化必须采用JSON格式。
我一直在做一些测试(没有一个对我有用)。一种是Oracle存储过程,用于返回XML,因为我希望sp代码更具动态性。 我不知道如何使用该输出变量并将其转换为Oracle本身内的JSON。或者,如果不能,我想知道是否可以使用Python将输出变量转换为JSON
我不太喜欢的另一种方法是在SP中制作“ JSON ”格式并返回该内容的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标记。
有人有什么想法,建议或建议吗?