栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Jackson制作POJO和解析递归对象?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Jackson制作POJO和解析递归对象?

这次我将与GSon接触

可以更轻松地管理递归。

可以从json2pojo网站创建Pojo,只需选择GSon作为JSon库即可。

这些是Pojos:

import java.io.Serializable;import com.google.gson.annotations.Expose;import com.google.gson.annotations.SerializedName;public class Pagination implements Serializable{    public Pagination() {        super();        // TODO Auto-generated constructor stub    }    @SerializedName("number")    @Expose    private Integer number;    @SerializedName("entriesPerPage")    @Expose    private Integer entriesPerPage;    @SerializedName("total")    @Expose    private Integer total;    private final static long serialVersionUID = 5114620434202813556L;    public Integer getNumber() {        return number;    }    public void setNumber(Integer number) {        this.number = number;    }    public Integer getEntriesPerPage() {        return entriesPerPage;    }    public void setEntriesPerPage(Integer entriesPerPage) {        this.entriesPerPage = entriesPerPage;    }    public Integer getTotal() {        return total;    }    public void setTotal(Integer total) {        this.total = total;    }}import java.io.Serializable;import java.util.List;import com.google.gson.annotations.Expose;import com.google.gson.annotations.SerializedName;public class Categories implements Serializable{    public Categories() {        super();        // TODO Auto-generated constructor stub    }    @SerializedName("pagination")    @Expose    private Pagination pagination;    @SerializedName("postings")    @Expose    private List<Posting> postings = null;    @SerializedName("total")    @Expose    private Integer total;    private final static long serialVersionUID = 4589512697836725240L;    public Pagination getPagination() {        return pagination;    }    public void setPagination(Pagination pagination) {        this.pagination = pagination;    }    public List<Posting> getPostings() {        return postings;    }    public void setPostings(List<Posting> postings) {        this.postings = postings;    }    public Integer getTotal() {        return total;    }    public void setTotal(Integer total) {        this.total = total;    }}import java.io.Serializable;import com.google.gson.annotations.Expose;import com.google.gson.annotations.SerializedName;public class Category implements Serializable{    public Category() {        super();        // TODO Auto-generated constructor stub    }    @SerializedName("taskid")    @Expose    private String taskid;    @SerializedName("name")    @Expose    private String name;    @SerializedName("parentCategory")    @Expose    private ParentCategory parentCategory;    private final static long serialVersionUID = -2127963072268572959L;    public String getTaskid() {        return taskid;    }    public void setTaskid(String taskid) {        this.taskid = taskid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public ParentCategory getParentCategory() {        return parentCategory;    }    public void setParentCategory(ParentCategory parentCategory) {        this.parentCategory = parentCategory;    }}import java.io.Serializable;import java.util.List;import com.google.gson.annotations.Expose;import com.google.gson.annotations.SerializedName;public class Posting implements Serializable{    @SerializedName("categories")    @Expose    private List<Category> categories = null;    private final static long serialVersionUID = 8135185675909461065L;    public List<Category> getCategories() {        return categories;    }    public Posting() {        super();        // TODO Auto-generated constructor stub    }    public void setCategories(List<Category> categories) {        this.categories = categories;    }}import java.io.Serializable;import java.util.List;import com.google.gson.annotations.Expose;import com.google.gson.annotations.SerializedName;public class ParentCategory implements Serializable{    @SerializedName("taskid")    @Expose    private String taskid;    @SerializedName("name")    @Expose    private String name;    @SerializedName("parentCategory")    @Expose    private List<ParentCategory>  parentCategory;    public ParentCategory() {        super();        // TODO Auto-generated constructor stub    }    private final static long serialVersionUID = -5989749742502713615L;    public String getTaskid() {        return taskid;    }    public void setTaskid(String taskid) {        this.taskid = taskid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public List<ParentCategory> getParentCategory() {        return parentCategory;    }    public void setParentCategory(List<ParentCategory> parentCategory) {        this.parentCategory = parentCategory;    }}

因此,这是一个测试实现:

 Pagination pagination = new Pagination();         pagination.setNumber(1);         pagination.setEntriesPerPage(200);         pagination.setTotal(3);         Categories categories = new Categories();          categories.setPagination(pagination);         Category category = new Category();         category.setName("Sunglasses");         category.setTaskid("79720");         List<Category> categoryList = new ArrayList<Category>();         Posting posting = new Posting();          posting.setCategories(categoryList);         List<ParentCategory> parentCategoryList = new ArrayList<ParentCategory>();         List<ParentCategory> parentCategoryList2 = new ArrayList<ParentCategory>();         ParentCategory  parentCategory1 = new ParentCategory();          parentCategory1.setName("Sunglasses & Fashion Eyewear");         parentCategory1.setTaskid("394");         ParentCategory  parentCategory2 = new ParentCategory();          parentCategory2.setName("Men's Accessories");         parentCategory2.setTaskid("2340");         ParentCategory  parentCategory3 = new ParentCategory();          parentCategory3.setName("Clothing, Shoes & Accessories");         parentCategory3.setTaskid("10987");         parentCategoryList.add(parentCategory2);          parentCategoryList2.add(parentCategory3);          parentCategory2.setParentCategory(parentCategoryList2);         parentCategory1.setParentCategory(parentCategoryList);         category.setParentCategory(parentCategory1);          Gson gson = new Gson(); System.out.println(gson.toJson(category));

…这就是生成的Json:

{    "taskid": "79720",    "name": "Sunglasses",    "parentCategory": {        "taskid": "394",        "name": "Sunglasses u0026 Fashion Eyewear",        "parentCategory": [{ "taskid": "2340", "name": "Menu0027s Accessories", "parentCategory": [{     "taskid": "10987",     "name": "Clothing, Shoes u0026 Accessories" }]        }]    }}

也许仍然需要一些调整,但是您明白了。

希望能帮助到你!

编辑:作为操作要求,我添加了杰克逊版本。

Pojos:

import java.io.Serializable;import com.fasterxml.jackson.annotation.JsonInclude;import com.fasterxml.jackson.annotation.JsonProperty;import com.fasterxml.jackson.annotation.JsonPropertyOrder;@JsonInclude(JsonInclude.Include.NON_NULL)@JsonPropertyOrder({"taskid", "name", "parentCategory"})public class ParentCategory implements Serializable{        private static final long serialVersionUID = 1L;    @JsonProperty("taskid")    private String taskid;    @JsonProperty("name")    private String name;    @JsonProperty("parentCategory")    private ParentCategory parentCategory;    public String getTaskid() {        return taskid;    }    public void setTaskid(String taskid) {        this.taskid = taskid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public ParentCategory getParentCategory() {        return parentCategory;    }    public void setParentCategory(ParentCategory parentCategory) {        this.parentCategory = parentCategory;    }}import com.fasterxml.jackson.annotation.JsonInclude;import com.fasterxml.jackson.annotation.JsonProperty;import com.fasterxml.jackson.annotation.JsonPropertyOrder;@JsonInclude(JsonInclude.Include.NON_NULL)@JsonPropertyOrder({"taskid", "name", "parentCategory"})public class Category implements Serializable{        private static final long serialVersionUID = 1L;    @JsonProperty("taskid")    private String taskid;    @JsonProperty("name")    private String name;    @JsonProperty("parentCategory")    private ParentCategory parentCategory;    public String getTaskid() {        return taskid;    }    public void setTaskid(String taskid) {        this.taskid = taskid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public ParentCategory getParentCategory() {        return parentCategory;    }    public void setParentCategory(ParentCategory parentCategory) {        this.parentCategory = parentCategory;    }}public class Test {    public static void main(String[] args) throws JsonProcessingException {         Category category = new Category();         category.setName("Sunglasses");         category.setTaskid("79720");         List<Category> categoryList = new ArrayList<Category>();         List<ParentCategory> parentCategoryList = new ArrayList<ParentCategory>();         List<ParentCategory> parentCategoryList2 = new ArrayList<ParentCategory>();         ParentCategory  parentCategory1 = new ParentCategory();          parentCategory1.setName("Sunglasses & Fashion Eyewear");         parentCategory1.setTaskid("394");         ParentCategory  parentCategory2 = new ParentCategory();          parentCategory2.setName("Men's Accessories");         parentCategory2.setTaskid("2340");         ParentCategory  parentCategory3 = new ParentCategory();          parentCategory3.setName("Clothing, Shoes & Accessories");         parentCategory3.setTaskid("10987");         parentCategory1.setParentCategory(parentCategory2);         parentCategory2.setParentCategory(parentCategory3);         category.setParentCategory(parentCategory1);        ObjectMapper objectMapper = new ObjectMapper();        String testJson = objectMapper.writevalueAsString(category);        System.out.println(testJson);    }}

这又是一个测试结果:

{    "taskid": "79720",    "name": "Sunglasses",    "parentCategory": {        "taskid": "394",        "name": "Sunglasses & Fashion Eyewear",        "parentCategory": { "taskid": "2340", "name": "Men's Accessories", "parentCategory": {     "taskid": "10987",     "name": "Clothing, Shoes & Accessories" }        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406328.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号