【问题标题】:Serialize POJO with nested objects using Jackson [closed]使用 Jackson 使用嵌套对象序列化 POJO [关闭]
【发布时间】:2019-12-15 15:09:47
【问题描述】:

我想使用 Jackson 将这样的对象序列化为 Json String。有可能吗?

public class Simple {
    public static void main(String[] args) {
        List<Person> emptylist = new ArrayList<>();
        Person p3 = new Person("grandpa", emptylist);
        Person p2 = new Person("father", emptylist);
        Person p1 = new Person("i am", emptylist);
        p2.children.add(p3);
        p1.children.add(p2);
    }

    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    @Setter
    public static class Person {
        String name;
        List<Person> children;
    }
}

【问题讨论】:

    标签: java json serialization jackson


    【解决方案1】:

    你可以这样做:

    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    
    import com.fasterxml.jackson.core.JsonGenerationException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    public class TestJackson {
        public static void main(String[] args) {
            Person p3 = new Person("X", new ArrayList<Person>());
            Person p2 = new Person("Y", new ArrayList<Person>());
            Person p1 = new Person("Z", new ArrayList<Person>());
            p2.getChildren().add(p3);
            p1.getChildren().add(p2);
            ObjectMapper mapper = new ObjectMapper();
            try {
                mapper.writeValue(new File("person.json"), p1);
            } catch (JsonGenerationException e) {
                e.printStackTrace();
            } catch (JsonMappingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    程序将以下内容写入person.json

    {"name":"Z","children":[{"name":"Y","children":[{"name":"X","children":[]}]}]}
    

    Person.java:

    import java.util.List;
    
    public class Person {
        private String name;
        private List<Person> children;
        public Person() {
        }
        public Person(String name, List<Person> children) {
            this.name = name;
            this.children = children;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public List<Person> getChildren() {
            return children;
        }
        public void setChildren(List<Person> children) {
            this.children = children;
        }
        @Override
        public String toString() {
            return "Person [name=" + name + ", children=" + children + "]";
        }
    }
    

    【讨论】:

    • 谢谢!对我来说工作得很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2018-04-02
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多