swagger2 problem missing java json string parsing jackson

java - problem - swagger gradle spring boot



AnĂ¡lisis JSON con Jackson Java (1)

Tengo un problema al analizar JSON con Jackson. Tengo un objeto POJO , envuelto por otro.

Aquí está mi código:

in main: ObjectMapper mapper = new ObjectMapper(); List<ItemBean> mpl2 = mapper.readValue(col.toString(),new TypeReference<List<ItemBean>>() {}); my POJO class: public class ItemBean implements Serializable { private List<Item> items; @JsonProperty("Item") public List<Item> getItems() { return items; } public void setItems(List<Item> items) { this.items = items; } } public class Item implements Serializable{ public String field1; public Integer field2; public static final class Field3 extends GenericJson { private String subfield1; private String subfield2; } }

Y aquí está la excepción lanzada:

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "item" (Class bean.item), not marked as ignorable at [Source: java.io.StringReader@101b6d56; line: 4, column: 16] (through reference chain: bean.ItemBean["items"]->bean.Item["item"])

JSON se ve de la siguiente manera:

["{/n /"items/": [ /n { /n /"item/": { /n /"field1/": /"val1/", /n /"field2/": /"val2/", /n /"field3/": [ /n { /n /"subfield1/": subval /n /"subfield2/": subval /n } /n ] /n } /n }, /n /"item/": { /n /"field1/": /"val1/", /n /"field2/": /"val2/", /n /"field3/": [ /n { /n /"subfield1/": subval /n /"subfield2/": subval /n } /n ] /n } /n }, /n /"item/": { /n /"field1/": /"val1/", /n /"field2/": /"val2/", /n /"field3/": [ /n { /n /"subfield1/": subval /n /"subfield2/": subval /n } /n ] /n } /n }, etc...... may I haven''t closed brackets correctly, but they are correct :) } ] "]

POJO repite totalmente los campos del objeto JSON.


Escribí mi propio método, que analiza JSON de dicha estructura.

Aquí está el código:

public static List parseList(String jsonInput, Class clazz) { List result = new LinkedList(); JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonInput); JSONObject items = (JSONObject)json.getJSONObject(0); JSONArray dataArrayJSON = (JSONArray)items.getJSONArray("items"); for (int i = 0; i < dataArrayJSON.size(); i++) { result.add(JSONObject.toBean(dataArrayJSON.getJSONObject(i).getJSONObject("item"), clazz)); } return result; }

El problema era que los elementos están en la matriz y los elementos son el único elemento. a su vez, los elementos también son una matriz, así que utilicé la dataArrayJSON.getJSONObject(i).getJSONObject("item") .