я следующая строка для разбора (строка объекта):Deserialize ошибка Джексона (PNG кодирования)
{ "langues" :
[
{"iso":"en", "id":1, "flag":[0,144,255,62,1,152,84,62,1,104,50,63,1,32,90,61,1,172,110,66,1,216,...]}
,
{"iso":"fr", "id":2, "flag":[0,208,0,63,1,208,106,62,1,120,49,63,1,32,90,61,1,60,110,...]}
,
{ etc... }
],
"when" : 133111... // timestamp
}
flag
представляет собой массив байт для PNG изображения
И следующие объекты:
public class Langues {
private Long when;
private ArrayList<Langue> langues;
public Long getWhen(){ return when; }
public void setWhen(Long when) { this.when=when; }
...
}
public class Langue {
private int id;
private String iso;
private byte[] flag;
// getters/setters
}
это бросить мне ошибку:
ObjectMapper mapper = new ObjectMapper();
Langues node = mapper.readValue(myString, Langues.class);
JsonParseException
Numeric value (144) out of range of Java byte
возможно байт [] не является правильным контейнером для него, или я могу установить джексон анализатор кодирования где-нибудь?
спасибо заранее!
[EDIT]
возможно редактирование каждого поля массива байт с -128 мог бы это сделать, но вид хитрым и реальная трата времени ...
я связался Codehaus благодаря списку рассылки и Я не закончил с AnsiString вместо UNICODE или Bytes, и voilà!
{"langues":[{"iso":"zh","id":7,"flag":"iVBORw0KGgoAAAANSUhEUgAAAIAAAABpCAYAAADy...
с таким же простым кодом
ObjectMapper mapper = new ObjectMapper();
Langues node = mapper.readValue(myString, Langues.class);
Является 'Langue' общедоступным класс? У меня когда-то была ошибка, и проблема заключалась в том, что я объявлял закрытый класс, а не публичным. Каковы геттеры и сеттеры? – Shiki
'Langue' и' Langues' являются публичным классом в своих собственных java-файлах с простыми геттерами и сеттерами, такими как 'public int getId() { return id; } public void setId (int id) { this.id = id; } 'that's all – Darkendorf
Я отредактировал все мое сообщение – Darkendorf