Java 用JDBC截断的Postgresql JSON数据
我正在开发一个应用程序,让java代码调用postgres存储过程(返回JSON字符串) 该函数正确执行并在pgAdmin中返回: 但是,当我使用以下命令通过JDBC调用函数时:Java 用JDBC截断的Postgresql JSON数据,java,postgresql,jdbc,Java,Postgresql,Jdbc,我正在开发一个应用程序,让java代码调用postgres存储过程(返回JSON字符串) 该函数正确执行并在pgAdmin中返回: 但是,当我使用以下命令通过JDBC调用函数时: public static void getAllNSX() throws SQLException { connection = DB.getConnection(); CallableStatement statement = connection.prepareCall("{ ? = call
public static void getAllNSX() throws SQLException
{
connection = DB.getConnection();
CallableStatement statement = connection.prepareCall("{ ? = call get_nsx_all() }");
statement.registerOutParameter(1, Types.VARCHAR);
statement.execute();
String x = statement.getString(1);
System.out.println(x);
}
我只得到这个:
我想知道我做错了什么,以及如何将完整的JSON字符串添加到我的应用程序中
谢谢 事实证明Postgresql没有问题,但由于我将所有字符串的数据类型设置为字符(255),这是一个具有255个字符的固定大小字符串,因此所有尾随空格都是255减去字符串长度
感谢Laurenz,Andreas的输入。屏幕截图的主要问题是我们无法看到和复制/粘贴实际字符,因此我不得不问:sadfs后的空格看起来像什么?第一个屏幕截图显示了
“sadfs”
(s
和结尾“
)之间的空格,但如果这不是一个真正的空格(unicode\u0020
),则可能是导致字符串显示失败的原因。您是否尝试打印字符串长度,即x.length()
?请注意您的所有值都有尾随的“空格”。除此之外,您可以选择astring::bytea::text
以十六进制获取字节。您好,Andreas,谢谢您的评论。正如您所建议的,我将pgAdmin中的JSON代码粘贴到这里:(您也可以在dropbox上查看txt文件:)我在intellij中得到的长度实际上是33600。
public static void getAllNSX() throws SQLException
{
connection = DB.getConnection();
CallableStatement statement = connection.prepareCall("{ ? = call get_nsx_all() }");
statement.registerOutParameter(1, Types.VARCHAR);
statement.execute();
String x = statement.getString(1);
System.out.println(x);
}