create java pojo from json

всім привіт

є такий джсон

{
    "table":[
        {
            "row":[
                {"value":"125","color":[125,125,13]},
                {"value":"12","color":[12,12,12]},
                {"value":"125","color":[25,15,13]}

            ]
        },{
            "row":[
                {"value":"125","color":[25,15,23]},
                {"value":"125","color":[25,5,1]},
                {"value":"125","color":[25,125,123]}
            ]
        }
    ]
}

мені треба по ньому зробити джава класи

@JsonPropertyOrder
public class Row {

    @JsonProperty
    List<JsonCell> cells;

    @JsonProperty
    public List<JsonCell> getCells() {
        return cells;
    }

    public void setCells(List<JsonCell> cells) {
        this.cells = cells;
    }   
}
@JsonPropertyOrder
public class JsonCell {

    private String value;
    private List<Integer> color = new ArrayList<>();

    @JsonProperty("value")
    public String getValue(){
        return this.value;
    }

    public void setValue(String value){
        this.value = value;
    }

    @JsonProperty("color")
    public List<Integer> getColor(){
        return this.color;
    }

}

В мене проблеми з класом Row. Field ’value’ воно шукає не в JsonCell а в Row. І викидає таку помилку

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "value" (Class com.compas.dashboards.xlsx.pojo.Row), not marked as ignorable
 at [Source: java.io.StringReader@40a8d1e4; line: 5, column: 27] (through reference chain: com.compas.dashboards.xlsx.pojo.RequestJsonDto["table"]->com.compas.dashboards.xlsx.pojo.Table["row"]->com.compas.dashboards.xlsx.pojo.Row["value"])
👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Пользуюсь библиотекой Flexjson. Позволяет сериализовать объекты в json и обратно. С коллекциями справляется.

TC неплохо бы наверное упомянуть что используется Jackson.
у меня заработало в виде

    public static class Row {

        @JsonProperty("row")
        private List<JsonCell> cells;
    }

    public static class JsonCell {
        @JsonProperty
        private String value;
        @JsonProperty
        private List<Integer> color;
    }

    public static List<Row> parseList(String input) {
        MappingJsonFactory factory = new MappingJsonFactory();

        try {
            final Map<String, List<Row>> parsed = factory.createJsonParser(input).readValueAs(new TypeReference<Map<String, List<Row>>>() {
            });
            return parsed.get("table");
        }
        catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

что впрочем есть хак

цікавий варіант
в мене це питання вже вирішилось.. я попросив клієнта прислати мені в РОВ ще СЕЛЛ а в селі вже ті масиви з валуе і колор
в мене питання —

parseList
це в якому класі прописується?
це в якому класі прописується?
в якому вже вийде.

С коллекциями вроде известная трабла, чисто с jackson не работал, но если использовать jaxb, то там есть аннотация @XmlWrapper для таких случаев. Несмотря на название, с jaxb можно и с json работать.

Может быть сработает так?

class Table {
List<Row> row;
}
...
class Row {
String value;
List<Integer> color;
}

Вопрос по программированию на ДОУ?

Вопрос по программированию на ДОУ

Подписаться на комментарии