How can I serialize this JSON using Jackson annotations?
Ok, for that JSON, you would just modify your example slightly, like:
public class MyPojo {
public Fields fields;
}
public class Fields {
public String foo;
public String bar;
}
since structure of objects needs to align with structure of JSON. You could use setters and getters instead of public fields of course (and even constructors instead of setters or fields), this is just the simplest example.
Your original class would produce/consume JSON more like:
{
"fields" : [
{
"foo" : "foovalue",
"bar" : "barvalue"
}
]
}
because Lists map to JSON arrays.
Philippe
Updated on December 11, 2020Comments
-
Philippe over 3 years
I have the following JSON :
{ fields : { "foo" : "foovalue", "bar" : "barvalue" } }
I wrote a pojo as follows :
public class MyPojo { @JsonProperty("fields") private List<Field> fields; static class Field { @JsonProperty("foo") private String foo; @JsonProperty("bar") private String bar; //Getters and setters for those 2 }
This fails obviously, because my json field "fields" is a hashmap, and not a list.
My question is : is there any "magic" annotation that can make Jackson recognize the map keys as pojo property names, and assign the map values to the pojo property values ?P.S.: I really don't want to have my fields object as a...
private Map<String, String> fields;
...because in my real-world json I have complex objects in the map values, not just strings...
Thanks ;-)
Philippe
-
Philippe over 13 yearsAlso, when I try to serialize those maps, I get : I/O error: Can not deserialize instance of java.lang.String out of START_OBJECT token
-