[英]arraylist/list RESTful web service json
您好我想問一下Web服務,如何顯示從數據庫到Map <>的值?
這是我的代碼
@GET
@Path("/jurusan/{kode_jurusan}")
@Produces(MediaType.APPLICATION_JSON)
public Map getMatkulByjurusan(@PathParam("kode_jurusan") String kode_jurusan){
Map<String, Object> rs = new HashMap<String, Object>();
rs.put("Pesan", "Berhasil");
System.out.println("Jurusan "+kode_jurusan);
try {
createConnection();
MyMap matkul =(MyMap) jt.queryObject("select matkul from tb_matkul where kode_jurusan = ?", new Object[] {kode_jurusan}, new MyMap());
closeConnection();
if(matkul != null){
rs.put("result", matkul);
}
} catch (Exception e) {
rs.put("Pesan", "Gagal karena : " +e.getMessage());
}
return rs;
}
}
但是當我嘗試訪問http:// localhost:9090 / Service / matkul / jurusan / 40時,我收到以下消息:
{"Pesan":"Gagal karena : Incorrect result size: expected 1, actual 14"}
此MyMap類
public class MyMap implements Serializable, RowMapper{
private static final long serialVersionUID = -8840406844877458198L;
public HashMap<String, Object> map = new HashMap<String, Object>();
public HashMap<String, Object> getMap() {
return map;
}
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
MyMap dto=new MyMap();
int rowCount = rs.getMetaData().getColumnCount();
for (int i = 1; i <= rowCount; i++) {
dto.map.put(rs.getMetaData().getColumnLabel(i), rs.getObject(i));
}
return dto;
}
public void put(String name, Object o){
map.put(name, o);
}
public Object get(String name){
return map.get(name);
}
public String getString(String name){
return (String)map.get(name);
}
public Integer getInt(String name){
return (Integer)map.get(name);
}
public Date getDate(String name){
return (Date)map.get(name);
}
public BigDecimal getBigDecimal(String name){
return (BigDecimal)map.get(name);
}
}
使用queryForList
方法代替queryObject
。
您可以從此處找到使用jdbcTemplate將多行映射到列表的示例。
看起來問題出在數據庫查詢上,如異常所示,該查詢期望結果只有1行,並產生14行。
此外,根據您使用的框架,您可能應該提供一種序列化MyMap
類的方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.