0
我从JSP中的数据库查询生成JSON字符串,但它始终有不可打印的字符,我不明白为什么!为什么我的json字符串中有28个不可打印的字符?
的JSP生产JSON低于:
String user = "username"; // set a username
String password = "password"; // set a password
Class.forName("org.firebirdsql.jdbc.FBDriver"); // JDBC for firebird a.k.a. Jaybird
String DB = "jdbc:firebirdsql://123.123.123.123:3050/C:\\db.fdb";
JSONArray obj=new JSONArray(); //Creating the json object
Connection connection = DriverManager.getConnection(DB, user, password);
Statement statement = connection.createStatement();
int i=0;
Class.forName("org.firebirdsql.jdbc.FBDriver"); // JDBC for firebird a.k.a. Jaybird
String query = "SELECT ses.sessionid, ses.datetime, ses.guid, ses.staffid FROM session ses ORDER by ses.datetime";
ResultSet resultset = statement.executeQuery(query);
while (resultset.next())
{
JSONObject j = new JSONObject();
j.put("SessionID", resultset.getString("sessionid"));
j.put("DateTime", resultset.getString("datetime"));
j.put("GUID", resultset.getString("guid"));
j.put("StaffID", resultset.getString("staffid"));
obj.add(i, j);
i++; // Counter for indexing the JSONArray
}
resultset.close();
statement.close();
connection.close();
这是我使用PHP中显示的代码:
echo '*'.$json.'*<br>';
echo strlen($json).'<br>';
$json = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json);
echo '*'.$json.'*<br>';
echo strlen($json).'<br>';
其示出了:
* [{"SessionID":"850","DateTime":"2011-10-03 14:21:37.0","GUID":"51e71c19-ca13-4053-bd95-2addb5ba69f6","StaffID":"804"}] *
146
*[{"SessionID":"850","DateTime":"2011-10-03 14:21:37.0","GUID":"51e71c19-ca13-4053-bd95-2addb5ba69f6","StaffID":"804"}]*
118
所以28个不可打印字符的区别 - 主要是在开始时。他们如何到达那里,如何在JSP中摆脱它们?
谢谢
的回答中找到JSON生成Servlet的一些启动示例。没有太多空白,大部分来自我无法控制的“@page import”。是一个servlet的唯一方式,因为这意味着重写我的所有代码。 – williamsdb
只需删除'%>'和'<%'之间的任何空格,包括换行符。你不需要重写所有的代码。只需复制到'doGet()'方法就行了。你只需要自己准备''出''response.getWriter()'。无论如何,将Java代码写入JSP文件而不是Java类是一个不好的做法。永远不要那样做。另见http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files – BalusC