Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用JDBC截断的Postgresql JSON数据_Java_Postgresql_Jdbc - Fatal编程技术网

Java 用JDBC截断的Postgresql JSON数据

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

我正在开发一个应用程序,让java代码调用postgres存储过程(返回JSON字符串)

该函数正确执行并在pgAdmin中返回:

但是,当我使用以下命令通过JDBC调用函数时:

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);
}