Я пытаюсь загрузить List<Pick>
на свой внешний сервер формы приложения. На сервере у меня есть приложение Spring, и я использую hibernate для загрузки объектов выбора из базы данных
Регулятор пружины:
@RequestMapping(value = "/web2/getActivePicks", method = RequestMethod.POST)
public @ResponseBody List<Pick> getActivePicks() {
PickDAO pd = new PickDAO();
List<Pick> picks = pd.getPicksFrom(new Date());
return picks;
}
Когда я пытаюсь получить этот список выбора, я получаю '
HTTP Status 500 - Could not write JSON:
(was java.lang.NullPointerException)
(through reference chain: java.util.ArrayList[0]->com.gepick.app.objects.rmo.Pick["match"]->com.gepick.app.objects.rmo.soccer.Match_soccer["ar"]);
nested exception is org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException)
(through reference chain: java.util.ArrayList[0]->com.gepick.app.objects.rmo.Pick["match"]->com.gepick.app.objects.rmo.soccer.Match_soccer["ar"])
Мой класс:
@Entity
public class Pick {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int pid;
@OneToOne
private Match_soccer match;
@OneToOne
private Algo1 algo;
@Column(length = 100)
private String pick;
@Column(length = 5)
private double plimit;
....
Я меняю контроллер на:
@RequestMapping(value = "/web2/getActivePicks", method = RequestMethod.POST)
public @ResponseBody JSONArray getActivePicks() {
PickDAO pd = new PickDAO();
JSONArray picks = new JSONArray(pd.getPicksFrom(new Date()));
return picks;
}
Но теперь я получаю статус http 406 и messgae:
The resource identified by this request is only capable of generating responses
with characteristics not acceptable according to the request "accept" headers
Похоже, что когда Jackson
, ваш JSON
карпер пытается конвертировать экземпляр Pick
, Match_soccer
имеет значение null и выдает исключение.
Вы можете либо увидеть, что ваш Match_soccer
инициализирован перед сопоставлением, либо вы можете аннотировать свой класс Pick
этим @JsonInclude(Include.NON_NULL)
.
Это даст указание картеру игнорировать все нулевые поля из отображения
Проблема связана с объектом соответствия, поскольку hr и ar имеют значение null.
Похоже, у Spring нет способа по умолчанию конвертировать List
в JSON, поэтому он не сможет передать его над REST. Вы можете сначала преобразовать его в JSONArray
?