我爲我的extjs應用程序使用spring mvc和jackson,並且卡住了一些類似的東西。 我有使用Hibernate從數據庫返回的記錄列表。 DAO類:使用Spring-Hibernate解決嵌套的JSON問題
@SuppressWarnings("unchecked")
@Override
public List<CandidateStatus> getcandidateStatus() {
//return hibernateTemplate.find("select candstat.candidate.firstName as firstName,candstat.candidate.lastName as lastName,candstat.candidate.email as email,candstat.statusTitle as statusTitle,candstat.requirement.client.clientName as clientName,candstat.requirement.reqTitle as reqTitle from CandidateStatus as candstat");
return hibernateTemplate.find("from CandidateStatus");
//return hibernateTemplate.find("from CandidateStatus candstat left outer join candstat.candidate left outer join candstat.requirement left outer join candstat.requirement.client");
//return hibernateTemplate.find("from Candidates as cands inner join cands.candidateStats");
}
**Service class**
public List<CandidateStatus> getCandidateStatusList()
{
//return candidatesDAO.getCandidates();
return candidatesDAO.getcandidateStatus();
}
Controller類
@RequestMapping(value="/candidates/view.action")
public @ResponseBody Map<String,? extends Object> view() throws Exception {
try{
//List<Candidates> candidates = candidatesService.getCandidatesList();
List<CandidateStatus> candidatestatus = candidatesService.getCandidateStatusList();
return getMap(candidatestatus);
} catch (Exception e) {
return getModelMapError("Error retrieving Candidates from database.");
}
private Map<String,Object> getMap(List<CandidateStatus> candidatestatus){
Map<String,Object> modelMap = new HashMap<String,Object>(3);
modelMap.put("success", true);
modelMap.put("total", candidatestatus.size());
modelMap.put("data", candidatestatus);
return modelMap;
}
private Map<String,Object> getModelMapError(String msg){
Map<String,Object> modelMap = new HashMap<String,Object>(2);
modelMap.put("message", msg);
modelMap.put("success", false);
return modelMap;
}
之前將其添加到地圖我要格式化的JSON在要求的格式按我application.I獲得格式不被extjs接受的嵌套方式。
{
"data": [
{
"id": 29,
"requirement": {
"id": 27,
"client": {
"id": 12,
"clientName": "HireCraft"
},
"clientId": 12,
"reqTitle": "Support Engineer"
},
"reqid": 27,
"resid": 45,
"candidate": {
"id": 45,
"firstName": "Vikram",
"lastName": "",
"email": "[email protected]"
},
"statusTitle": "Shortlisted"
}],
"success":true,
"total":7668
}
我想要的JSON是這樣的平面文件沒有嵌套。
"data": [ {
"clientName": "ABC"
"firstName": "Suynil",
"lastName": "Seelam",
"email": "[email protected]",
"reqTitle": "Java"}]success:true,total:768}
請問你能指導我如何達到這個目標。 我試了一下,得到了一些東西。
private Map<String,Object> getMap(List<CandidateStatus> candidatestatus){
Map<String,Object> modelMap = new HashMap<String,Object>(3);
Map<String,Object> candDetails = new HashMap<String,Object>(7);
Iterator<CandidateStatus> iterator=candidatestatus.iterator();
CandidateStatus astring = new CandidateStatus();
String Client;
String Fname;
String Lname;
String Email;
String Phone;
String Status;
String Require;
while(iterator.hasNext())
{
astring = iterator.next();
/*System.out.println(astring.getCandidate().getFirstName());
System.out.println(astring.getCandidate().getLastName());
System.out.println(astring.getCandidate().getEmail());
System.out.println(astring.getStatusTitle());
System.out.println(astring.getRequirement().getReqTitle());*/
Client = astring.getRequirement().getClient().getClientName();
Fname = astring.getCandidate().getFirstName();
Lname = astring.getCandidate().getLastName();
Email = astring.getCandidate().getEmail();
Phone = astring.getCandidate().getPhone();
Status = astring.getStatusTitle();
Require= astring.getRequirement().getReqTitle();
candDetails.put("clientName",Client);
candDetails.put("firstName",Fname);
candDetails.put("lastName",Lname);
candDetails.put("email",Email);
candDetails.put("phone",Phone);
candDetails.put("statusTitle",Status);
candDetails.put("reqTitle",Require);
//jsonMap.put("root", candDetails);
//System.out.println(jsonMap);
}
//System.out.println("----"+candDetails+"----");
modelMap.put("success", true);
modelMap.put("total",candDetails.size());
modelMap.put("data",candDetails);
return modelMap;
現在,當我嘗試candDetails添加到modelMap我只得到最後一個記錄。爲什麼呢???
感謝
僅供參考Grails可以簡化配置和JSON支持 - 並且您可以獲得相同的hibernate/spring框架:)只是需要考慮的事情。 – dbrin 2012-03-23 21:57:04
@DmitryB感謝您分享您的觀點,但這裏至今沒有Grails知識。 :(這將有助於我,如果你可以添加幾個例子的指針:) – coderunner 2012-03-24 10:39:24
在這裏你去:http://www.grails.org/Documentation – dbrin 2012-03-25 00:25:54