Situation: Ich ändere das Webanwendungsprojekt eines Freundes. Es verwendet Spring MVC und Java, JQgrid und GSON.Mein JSON-Format unterscheidet sich vom Standard-JSON-Format, das von JQGrid akzeptiert wird, funktioniert aber weiterhin. Wie?
Projekt hat eine Student.java
Modellklasse, StudentDaoImpl.java
DAO-Klasse und einen Buisness-Class mit listStudentData()
Dienst, der eine Liste von Student
Objekten zurückgibt, und Projekt verwendet jqGrid
jQuery-Plugin Schülerdaten in view.jsp
anzuzeigen.
View.jsp einmal geladen folgende Ajax-Anforderung macht student
Daten abzurufen:
function initiate() {
$.ajax({
type : 'GET',
dataType : "json",
url : 'listStudentData',
success : function (data)
{
$("#tabel").jqGrid({
data: data,
colNames: ["name" ,"id"],
datatype: "local",
colModel:[{
name : 'studentName',
index : 'studentName',
width : '290px'
}, {
name : 'studentId',
index : 'studentId',
width : '220px'
}]
rowNum:25,
viewrecords: true,
pager: "#div",
scrollOffset: 0,
emptyrecords:"No records",
height: 'auto',
caption: "student data",
grouping: false,
groupingView : {},
});
}
});
}
-Controller Umgang mit dieser Antwort:
@RequestMapping(value = "/listStudentData", method = RequestMethod.GET)
public @ResponseBody
String listStudentData() {
final List<Student> list = studentBusiness.listStudentData();
return gson.toJson(list);
}
Meine json Antwort von diesem Controller ist wie folgt:
[{"studentName":"x" , "StudentId" : "[email protected]" },{"studentName":"Y" , "StudentId" : "[email protected]"}]
Und Code funktioniert gut und geben korrekte Ausgabe!
Problem: Jetzt durch Dokumentation von jqGrid (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data), ich werde ist es klar gesagt, dass json-Format von jqGrid erwartet ist wie folgt:
{
"total": "xxx",
"page": "yyy",
"records": "zzz",
"rows" : [
{"id" :"1", "cell" :["cell11", "cell12", "cell13"]},
{"id" :"2", "cell":["cell21", "cell22", "cell23"]}
]
}
und JSON-Format von gson
Bibliothek erzeugt wird, dass wird gesendet als Antwort ist anders als dieses Format dann, wie es richtig funktioniert? Ich suchte das Projekt nach einem benutzerdefinierten JsonReader, konnte aber keinen finden. Fehle ich etwas, wenn nicht, wie funktioniert dieser Code?
Es wird nicht immer von dem von Ihnen bereitgestellten Format benötigt, es hängt vom Raster ab. –
Sie sagen, dass das Json-Format, in das Gson die Java-Objekte konvertiert, direkt an JqGrid ohne irgendeinen benutzerdefinierten Jsonreader geliefert werden kann. –
'Gson' ist eine Bibliothek, die Ihnen hilft, Ihre Java-Objekte in 'Json'-Typ zu konvertieren. Siehe [Referenzen1] (https://sites.google.com/site/gson/gson-user-guide), [References2] (https://google-gson.googlecode.com/svn/trunk/gson/docs/ javadocs/com/google/gson/Gson.html) und [Google Gson zum Konvertieren von Java-Objekten in JSON] (http://www.vogella.com/tutorials/JavaLibrary-Gson/article.html) –