Java 如何在jOOQ中使用formatJSON(JSONFormat)正确格式化生成的JSON类型例程结果?

Java 如何在jOOQ中使用formatJSON(JSONFormat)正确格式化生成的JSON类型例程结果?,java,arrays,json,plpgsql,jooq,Java,Arrays,Json,Plpgsql,Jooq,在使用jOOQ代码生成器查询生成的例程时,我遇到了正确格式化JSON结果的问题。我正在尝试对我的get_all_orders()方法执行SELECT子句,该方法在PL/pgSQL中定义,该方法返回json类型的结果。这是我执行jOOQ查询的代码: DSLContext create = DSL.using(connection, SQLDialect.POSTGRES); Result<Record1<String>> resultR1S = create.select(

在使用jOOQ代码生成器查询生成的例程时,我遇到了正确格式化JSON结果的问题。我正在尝试对我的
get_all_orders()
方法执行SELECT子句,该方法在PL/pgSQL中定义,该方法返回
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"}, ...]}
我似乎找不到解决方法,所以有没有合适的方法通过使用formatJSON(JSONFormat)方法…或其他方法来实现这一点?

非常感谢您提供的任何帮助/建议。

缺少一项功能,可以将
JSON
/
JSONB
列与(或
XML
列与)结合使用:


作为一种解决方法,您必须自己手动完成这项工作,并避免使用
formatJSON()
方法。

在对适当的JSON库进行了一些研究以实现我的目标后,我决定这样做(直到jOOQ3.13.1中提供了更方便的方法):

现在我得到了如下所需的JSON格式(顺便说一句,它被修剪了:):


你好,卢卡斯,谢谢你的快速回复。对于这种JSON格式(删除不必要的尖括号和反斜杠),您是否建议使用其他库?提前谢谢。@NikolaS:我不会修正错误的输出。我会从一开始就确保输出是正确的。我同意,但是jOOQ中有没有合适的方法来实现这一点?现在我正在尝试使用字符串类方法,例如
replaceAll()
substring()
,以便将混乱的输出修复为临时解决方案(因为我似乎找不到其他更好的方法)。我已经发布了我的用例的(临时)解决方案,作为我问题的答案。如果你有什么要补充/改正的,请告诉我。欢迎提供任何意见/建议。:)@尼古拉斯:正如我所说。我不会修正错误的输出。从未。不是跟jOOQ,不是跟别的什么。格式化数据是丢失的数据。最好编写一些正确格式化原始数据的自定义逻辑。至少,这是我的看法。
{"orders" : [{"order_id" : 1, "total_price" : 29.98, "order_date" : "2019-08-22T10:06:33", "user\" : {"user_id" : 1, "username\" : "test"}, ...]}
String strResultFinal = resultR1S.formatJSON(
        new JSONFormat()
        .header(false)
        .recordFormat(RecordFormat.ARRAY)
);
final String fixedJSONString = strResultFinal
        .substring(3, strResultFinal.length() - 3)
        .replaceAll("\\\\n", "") // for some reason '\n' is being part of String (I presume for new row) and needs to be removed for proper JSON format... 
        .replaceAll("\\\\", ""); //...as well as escaping backslash character
{"orders" : [{"order_id" : 1, "total_price" : 29.98, "order_date" : "2019-08-22T10:06:33", "user" : {"user_id" : 1, "username" : "test"}, ..}]}