我有兩個問題:java.lang.IllegalStateException:這不是一個JSON陣列
1)java.lang.IllegalStateException:這不是一個JSON陣列
這種努力的時候我得到將List轉換爲JSON。也PLZ告訴我如何處理空數組到JSON。
2)當我在數據庫運行查詢它取了我5個結果。當我調試OperatorDetailsDao.java時,我得到rs.next()只運行一次。另一個問題是我在operatorList中得到null結果,雖然它是運算符數組。
請幫我理清問題,堅持兩天。
控制器類
public class SearchController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json");
try {
String term = request.getParameter("terms");
System.out.println("Data from ajax call " + term);
OperatorDetialsDao details = new OperatorDetialsDao();
List<OperatorDetailsBean> operatorList = details.getOperators(term);
System.out.println("Operator List " + operatorList);
JsonElement element = new Gson().toJsonTree(operatorList);
System.out.println(element);
JsonArray jsonArray = element.getAsJsonArray();
response.getWriter().print(jsonArray);
response.getWriter().flush();
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
OperatorDetailsDao - > getOperators()
public List<OperatorDetailsBean> getOperators(String name) {
PreparedStatement ps = null;
List<OperatorDetailsBean> operatorList = new ArrayList();
operatorList = null;
name = name.toUpperCase();
String data;
try {
ps = connection.prepareStatement("SELECT * FROM operator_details_m WHERE upper(name) LIKE ?");
ps.setString(1, name + '%');
ResultSet rs = ps.executeQuery();
while (rs.next()) {
uname = rs.getString("NAME");
token = rs.getString("TOKEN_NO");
OperatorDetailsBean op = new OperatorDetailsBean();
op.setName(uname);
op.setTokenNo(token);
operatorList.add(op);
}
} catch (Exception e) {
//System.out.println(e.getMessage());
}
return operatorList;
}
OperatorDetailsBean是一個bean類吸氣劑和setter。
是否有可能爲你提供的JSON內容的片段?至於數據庫循環而言好像你遇到品特零位例外,因爲你已經設置operatorList在上述行初始化之後空 - 但你的趕上(例外五)內囫圇吞棗它{}。您只需要刪除說operatorList = null –
的初始化語句首先,您的代碼格式不起作用。除此之外,請嘗試發佈您的JSON字符串。如果它以'['開始,那麼它是一個數組,如果它以'{'它的一個對象開始。 – shyam
@PrahaladDeshpande,我想創建一個JSON在ajax中使用,我已經編寫了用於在控制器文件中創建json的代碼。但是那裏operatorList返回null,所以我無法提供json片段。 arrayList(operatorList)包含字段「name」和「token」都是String的操作符數組。 –