这可能是一个重复的问题..请参阅此link 我能够将一个json对象映射到POJO.But如何使用相同的jackson框架将json对象的数组转换为pojo。
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();
}
}
这是类用户对象。
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 + "]";
}
这是我试图做的:( readFromFile()从文件中获取json)
User1[] user2=mapper.readValue(readFromFile(), User1[].class);
jsonToPojo()仅适用于一个对象。但是,如果我尝试上面的代码行,它不会采用以下json:
[
{
"age":"23",
"messages":["hi","how","are u."],
"name":"amal"
},
{
"age":"98",
"messages":["Reply","my","question"],
"name":"You"
}
]
答案 0 :(得分:8)
尝试这样的事情:
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 ....
// ****************
}
您将获得此输出:
{"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]