Ошибка десериализации с Джексоном (кодировка png) - PullRequest
1 голос
/ 08 марта 2012

У меня есть следующая строка для анализа (строка в объект):

{   "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

может быть, byte [] не подходит для этого или я могу установить кодировку парсера Джексона где-нибудь?

спасибо заранее !!

[EDIT]

возможно, редактирование каждого поля массива байтов с -128 могло бы сделать это, но это было бы сложно и просто трата времени ...

Я связался с Codehaus благодаря списку рассылки, и я сразу же закончил с AnsiString вместо UNICODE или Bytes, и вуаля!

{"langues":[{"iso":"zh","id":7,"flag":"iVBORw0KGgoAAAANSUhEUgAAAIAAAABpCAYAAADy...

с тем же простым кодом

ObjectMapper mapper = new ObjectMapper();
Langues node = mapper.readValue(myString, Langues.class);

1 Ответ

1 голос
/ 09 марта 2012

Может быть, редактирование каждого поля массива байтов с -128 могло бы сделать это, но это было бы непросто и трата времени ...

Я связался с Codehaus благодаря списку рассылки, и я сразу же закончил с AnsiString вместо UNICODE или Bytes, и вуаля!

{"langues":[{"iso":"zh","id":7,"flag":"iVBORw0KGgoAAAANSUhEUgAAAIAAAABpCAYAAADy...

с тем же простым кодом

ObjectMapper mapper = new ObjectMapper();
Langues node = mapper.readValue(myString, Langues.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...