我遇到了JSON问题。所以我从客户端获得了一个user_id,我必须检查这个user_id中的组。
我从数据库中获取数据并将其放入列表中。 我在xml文件中有这个注释
<mvc:annotation-driven />
在输出中,我必须返回(从服务器端到客户端),例如JSON的树格式:
{'courses':
[
{'name':'Informatyka w gospodarce', 'id':'1', 'dates':
[
{'id':'1', 'code':'bla1', 'name':'PN 13.15'},
{'id':'2', 'code':'bla2', 'name':'WT 11.15'},
{'id':'3', 'code':'bla3', 'name':'PT 19.55'},
]
},
{'name':'Inżynieria oprogramowania', 'id':'2', 'dates':
[
{'id':'4', 'code':'bla4', 'name':'PN 13.15'},
{'id':'5', 'code':'bla5', 'name':'WT 11.15'},
{'id':'6', 'code':'bla6', 'name':'PT 19.55'},
]
}
]
}
所以我的输出只有这个: { '课程':[]}
问题是:我应该改变什么,在输出这个例子? 也许我对JSON的解释很糟糕?
类树(依赖): 的 JsonKursy &LT; - 的 JsonGrupy &LT; - 的 JsonGrupyZajeciowe
现在这是一个使用Jackson的POJO clasess: 的 JsonKursy
import java.util.List;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonSubTypes;
import com.project.Json.JsonGrupy;
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
@JsonSubTypes({ @JsonSubTypes.Type(JsonGrupy.class) })
public class JsonKursy {
private List<JsonGrupy> courses;
public List<JsonGrupy> getCourses() {
return courses;
}
public void setCourses(List<JsonGrupy> courses) {
this.courses = courses;
}
}
JsonGrupy
import java.util.List;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonSubTypes;
@JsonSubTypes({ @JsonSubTypes.Type(JsonGrupyZajeciowe.class) })
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
public class JsonGrupy {
private String name;
private int id;
private List<JsonGrupyZajeciowe> dates;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<JsonGrupyZajeciowe> getDates() {
return dates;
}
public void setDates(List<JsonGrupyZajeciowe> dates) {
this.dates = dates;
}
}
JsonGrupyZajeciowe
import org.codehaus.jackson.annotate.JsonAutoDetect;
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
public class JsonGrupyZajeciowe {
private int id;
private String code;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我的控制器返回Json:
@RequestMapping(value = "/getcourses", method = RequestMethod.POST, produces="application/json")
public @ResponseBody
JsonKursy wyslijKursy(
@RequestParam(value = "userid", required = true) int login,
Model model) {
List<GrupyZajeciowe> grupyzajeciowe = pobierzGrupyService
.pobierzGrupyZajeciowe(login);
int idKursu;
int i;
JsonKursy jsonKursy = new JsonKursy();
JsonGrupy jsonGrupy = new JsonGrupy();
JsonGrupyZajeciowe jsonGrupyZajeciowe = new JsonGrupyZajeciowe();
List<JsonGrupy> courses = new ArrayList<JsonGrupy>();
for (i = 0; i < grupyzajeciowe.size(); i++) {
idKursu = grupyzajeciowe.get(i).getIdKursu().getIdKursy();
List<Kursy> kurslist = pobierzGrupyService.pobierzKursy(idKursu);
for (Kursy kurs : kurslist) {
List<JsonGrupyZajeciowe> name = new ArrayList<JsonGrupyZajeciowe>();
for (GrupyZajeciowe grupa : grupyzajeciowe) {
// set dla JsonGrupyZajeciowe
jsonGrupyZajeciowe.setId(grupa.getIdKursu().getIdKursy());
jsonGrupyZajeciowe.setCode(grupa.getKodGrupy());
jsonGrupyZajeciowe.setName(grupa.getNazwa());
}
jsonGrupy.setName(kurs.getNazwaKursu());
jsonGrupy.setId(kurs.getIdKursy());
jsonGrupy.setDates(name);
}
jsonKursy.setCourses(courses);
System.out.println("Test wydruk"+ jsonKursy);
}
return jsonKursy;
}
答案 0 :(得分:0)
您似乎忘了向courses
列表中添加元素。因此序列化为json的jsonKursy
对象不包含任何课程。
这可以提供帮助:
courses.add(jsonGrupy);