这次我将与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" } } }}


