首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有聚合对象的Jackon API,用于从JSON到类的转换

带有聚合对象的Jackon API,用于从JSON到类的转换
EN

Stack Overflow用户
提问于 2020-07-14 13:28:32
回答 2查看 34关注 0票数 0

如果我们有以下两个类Class1和类2,如何使用jackson api将Json转换为类:

代码语言:javascript
运行
复制
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代码:

代码语言:javascript
运行
复制
    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);
EN

回答 2

Stack Overflow用户

发布于 2020-07-14 13:36:51

你可以这样做:

代码语言:javascript
运行
复制
ObjectMapper mapper = new ObjectMapper();
NestedPOJO nestedPOJO = mapper.readValue(loadDataAsString("payload - Copy.json"),NestedPOJO.class);

并将下面的方法调用为loadDataAsString

代码语言:javascript
运行
复制
/**
 * 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的问题,那就自己改正吧。

票数 0
EN

Stack Overflow用户

发布于 2020-07-14 20:09:12

我复制了你的类和代码,它工作得很好。也许您的JSON不正确。我用的是:{"firstname":"fn","age":10,"detail":{"firstname":"fn","lastname":"ln"}}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62888596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档