如果我们有以下两个类Class1和类2,如何使用jackson api将Json转换为类:
public class NestedPOJO {
String firstname;
Integer age;
Details detail;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Details getDetail() {
return detail;
}
public void setDetail(Details detail) {
this.detail = detail;
}
}
public class Details {
String firstname;
String lastname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
下面是我使用的Jackson API代码:
NestedPOJO n = new NestedPOJO();
ObjectMapper m = new ObjectMapper();
n = m.readValue(new File(System.getProperty("user.dir") + "\\src\\test\\resources\\payload - Copy.json"), NestedPOJO.class);
发布于 2020-07-14 13:36:51
你可以这样做:
ObjectMapper mapper = new ObjectMapper();
NestedPOJO nestedPOJO = mapper.readValue(loadDataAsString("payload - Copy.json"),NestedPOJO.class);
并将下面的方法调用为loadDataAsString
/**
* This method will help to load data from the respective JSON file.
* @param dataRequestType String
* @return String
*/
protected String loadDataAsString(String dataRequestType) {
try {
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
File file = new File(Objects.requireNonNull(classLoader.getResource(dataRequestType)).getFile());
return new String(Files.readAllBytes(file.toPath()));
} catch (IOException e) {
//logger.error("Exception occurred during load data for {}", dataRequestType, e);
e.printStackTrace();
}
return null;
}
这种方法肯定会对你有效。如果你有任何关于path的问题,那就自己改正吧。
发布于 2020-07-14 20:09:12
我复制了你的类和代码,它工作得很好。也许您的JSON不正确。我用的是:{"firstname":"fn","age":10,"detail":{"firstname":"fn","lastname":"ln"}}
https://stackoverflow.com/questions/62888596
复制相似问题