我想将从MySQL数据库中检索到的信息显示在表格中。我可以在我的控制台中看到JSON结果,但我需要在我的应用程序中显示它。这是我的代码的一部分:
byte[] data = cr.getResponseData();
Map response = (Stock.ParseJsonObject(data));
Stock.killNetworkAccess();
java.util.List statementResult = (java.util.List) response.get("StatementResult");
System.out.println("Statement Result:" + statementResult);
for (Object saveResult1 : statementResult) {
Map tempHash = (Map) saveResult1;
System.out.println(tempHash);
String result = tempHash.get("Status").toString();
String sellerName = tempHash.get("SellerName").toString();
String stockName = tempHash.get("StockName").toString();
if (result.equalsIgnoreCase("ok")) {
// System.out.print("Success");
System.out.println(stockName); //this works: I can see the list of stock names from my database
String[] columnNames = { "Seller's Name", "Stock Name", "Unit", "Price" };
Object[] dat = { sellerName, stockName };
Table tb = new Table(new DefaultTableModel(columnNames, (Object[][]) dat, false));
allrec.addComponent(tb);
}
}
控制台显示此信息 - >>>>>>
Statement Result:[{ID=1, SellerName=, StockName=Seven UP, Unit=23, Price=1, TimeCreated=0000-00-00 00:00:00, Status=Ok}, {ID=2, SellerName=, StockName=Seven UP, Unit=23, Price=1, TimeCreated=0000-00-00 00:00:00, Status=Ok}, {ID=3, SellerName=, StockName=Wallmart, Unit=76, Price=34, TimeCreated=0000-00-00 00:00:00, Status=Ok}, {ID=5, SellerName=, StockName=Africa Insurance, Unit=3, Price=23, TimeCreated=0000-00-00 00:00:00, Status=Ok}
{ID=1, SellerName=, StockName=Seven UP, Unit=23, Price=1, TimeCreated=0000-00-00 00:00:00, Status=Ok}
Seven UP
这表明正在从数据库中检索数据。但是,当我尝试在表中获取它时,我会收到一个错误对话框,其中显示:
Error: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to Ljava.lang.Object]
我确定我的错误在这里: - >>>>
String[] columnNames = { "Seller's Name", "Stock Name", "Unit", "Price" };
Object[] dat = { sellerName, stockName };
Table tb = new Table(new DefaultTableModel(columnNames, (Object[][]) dat, false));
我在另一个名为Stock的类中有这些:
public static Map ParseJsonObject(byte[] data) {
try {
JSONParser parser = new JSONParser();
Map response = parser.parseJSON(new InputStreamReader(new ByteArrayInputStream(data), "UTF-8"));
return response;
} catch (IOException ioe) {
}
return null;
}
public static void killNetworkAccess() {
NetworkManager.getInstance().shutdown();
}
有人可以帮帮我吗?谢谢。
答案 0 :(得分:0)
转换它:
Object[] dat = { sellerName, stockName };
Table tb = new Table(new DefaultTableModel(columnNames, (Object[][]) dat, false));
对此:
Object[][] dat = {
{sellerName, stockName}
};
Table tb = new Table(new DefaultTableModel(columnNames, dat, false));
注意Object的额外括号表示2D数组,另外两个花括号表示另一个花键数组。
如果您将行视为一个数组(元素集),那么表实际上是一个数组数组(其中每个数组代表一行)。
在Java中,Casting是严格的,因此您需要创建正确类型的对象,这样才能开始使用,因为它可以帮助您避免遇到麻烦。