【发布时间】:2020-10-25 14:29:14
【问题描述】:
在使用 jOOQ 代码生成器查询生成的例程时,我遇到了正确格式化 JSON 结果的问题。我正在尝试对 PL/pgSQL 中定义的 get_all_orders() 方法执行 SELECT 子句(在 this 问题中提到),它返回 json 类型的结果。这是我执行 jOOQ 查询的代码:
DSLContext create = DSL.using(connection, SQLDialect.POSTGRES);
Result<Record1<String>> resultR1S = create.select(Routines.getAllOrders()).fetch();
final String strResultFinal = resultR1S.formatJSON(
new JSONFormat().header(false).recordFormat(RecordFormat.ARRAY)
);
...这是我在控制台上得到的输出(最后被截断,因为结果输出太长而无法放入):
[["{\"orders\" : [{\"order_id\" : 1, \"total_price\" : 29.98, \"order_date\" : \"2019-08-22T10:06:33\", \"user\" : {\"user_id\" : 1, \"username\" : \"test\"}, \"order_items\" : [{\"order_item_id\" : 1, \"amount\" : 1, \"book\" : {\"book_id\" : 1, \"title\" : \"Harry Potter and the Philosopher's Stone\", \"price\" : 29.98, \"amount\" : 400, \"is_deleted\" : false, \"authors\" : [{\"author_id\":4,\"first_name\":\"JK\",\"last_name\":\"Rowling\"}], \"categories\" : [{\"category_id\":2,\"name\":\"Lyric\",\"is_deleted\":false}]}, \"order_id\" : 1, \"total_order_item_price\" : 29.98}]}, {...}"]]
我想要实现的是去掉 双尖括号(在输出的开头和结尾) 和 反斜杠字符,所以它看起来像这样:
{"orders" : [{"order_id" : 1, "total_price" : 29.98, "order_date" : "2019-08-22T10:06:33", "user\" : {"user_id" : 1, "username\" : "test"}, ...]}
我似乎无法找到解决此问题的方法,所以有什么适当的方法可以通过使用 formatJSON(JSONFormat) 方法...或其他方法来实现吗?
非常感谢任何帮助/建议。
【问题讨论】:
标签: java arrays json plpgsql jooq