Convert JSON array to POJO using Jackson adapter card

Perhaps this is a duplicate question .. please refer to.
I can map one json object to POJO. But how can I convert the json object array to pojo using the same jackson structure.

private void jsonToPojo(){ ObjectMapper mapper=new ObjectMapper(); try { User1 user1=mapper.readValue(readFromFile(), User1.class); User1[] user2=mapper.readValue(readFromFile(), User1[].class); System.out.println(user1); Toast.makeText(getApplicationContext(), "inside try", 0).show(); } catch (JsonParseException e) { // TODO Auto-generated catch block Log.i("Exception", "jsonparseexception"); e.printStackTrace(); } catch (JsonMappingException e) { // TODO Auto-generated catch block Log.i("Exception", "jsonmapping exception"); e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block Log.i("Exception", "ioexception"); e.printStackTrace(); } } 

This is an object of a class class.

 public class User { private int age = 23; private String name = "amal"; private List<String> messages = new ArrayList<String>() { { add("hi"); add("how"); add("are u."); } }; //getter and setter methods @Override public String toString() { return "User [age=" + age + ", name=" + name + ", " + "messages=" + messages + "]"; } 

This is what I tried to do: (readFromFile () takes json from a file)

 User1[] user2=mapper.readValue(readFromFile(), User1[].class); 

jsonToPojo () works well for just one object. However, if I try the above line of code, it does not accept the following json:

 [ { "age":"23", "messages":["hi","how","are u."], "name":"amal" }, { "age":"98", "messages":["Reply","my","question"], "name":"You" } ] 
+6
source share
1 answer

Try something like this:

 public class Test { /** * @param args */ public static void main(String[] args) { User a = new User(23, "amal"); ArrayList<String> message = new ArrayList<String>(); message.add("m1"); message.add("m2"); a.setMessages(message); User b = new User(58, "pete"); User[] ab = new User[] {a, b}; ObjectMapper mapper = new ObjectMapper(); try { String s1 = getJson1(a); System.out.println(s1); User user1 = mapper.readValue(s1, User.class); System.out.println(user1); System.out.println("----------------"); String s2 = getJson2(ab); System.out.println(s2); User[] user2 = mapper.readValue(s2, User[].class); for (User u : user2) System.out.println(u); } catch (Exception e) { e.printStackTrace(); } } private static String getJson1(User user) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(user); } private static String getJson2(User[] ab) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(ab); } } public class User { private int age; private String name; private ArrayList<String> messages; public User() { super(); } public User(int age, String name) { this(); this.age = age; this.name = name; } // **************** // Getter & Setter .... // **************** } 

You will get this output:

 {"age":23,"name":"amal","messages":["m1","m2"]} User [age=23, name=amal, messages=[m1, m2]] ---------------- [{"age":23,"name":"amal","messages":["m1","m2"]},{"age":58,"name":"pete","messages":null}] User [age=23, name=amal, messages=[m1, m2]] User [age=58, name=pete, messages=null] 
+8
source

Source: https://habr.com/ru/post/944764/


All Articles