代码之家  ›  专栏  ›  技术社区  ›  Bhavik Ambani

从Jackson解析器生成JSON

  •  0
  • Bhavik Ambani  · 技术社区  · 12 年前

    我在Java中使用Jackson解析器,我想从 POJO 格式如下。我该怎么做?

    {“TOTAL”:1,“CURRENTPAGE”:1、“TOTALRECORDS”:6,“ROWS”:[{“pagename”:“Called getter Method:Test”,“pagestatus”:“Test Status”,“id”:4},{,“pagestatus”:“测试状态”,“id”:4}]}

    如果我确实喜欢下面的东西,那么它就不起作用了,给了我错误的输出

        Tblselectablecolumnjqgrid selCol = new Tblselectablecolumnjqgrid();
        selCol.setPageid(4);
        selCol.setPagename("Test");
        selCol.setPagestatus("Test Status");
    
        selList.add(selCol);
        selList.add(selCol.clone());
        selList.add(selCol.clone());
        selList.add(selCol.clone());
    
        ObjectMapper om = new ObjectMapper();
    
        String writeValueAsString = om.writeValueAsString(selList);
    
        System.out.println("Result:    " + writeValueAsString);
    
        JsonFactory jsf = new JsonFactory();
    
        JsonTreeWriter tree = new JsonTreeWriter();
    

    它给了我以下输出

    [{“pagename”:“被调用的getter方法:测试”,“pagestatus”:“测试状态”,“id”:4},{“page name”:

    为了获得所需的输出,我应该对代码进行哪些更改?

    我的POJO课程

    package com.pojo;
    
    import org.codehaus.jackson.annotate.JsonProperty;
    import org.codehaus.jackson.map.annotate.JsonCachable;
    
    /**
     * @author bhavik.ambani
     *
     *         Useful for storing the current status of the grid in the table.
     */
    public class Tblselectablecolumnjqgrid implements java.io.Serializable, Cloneable {
    
        private static final long serialVersionUID = 1L;
    
        @JsonProperty("id")
        private int pageid;
    
        private String pagename;
    
        private String pagestatus;
    
        public Tblselectablecolumnjqgrid() {
        }
    
        public Tblselectablecolumnjqgrid(int pageid, String pagename) {
            this.pageid = pageid;
            this.pagename = pagename;
        }
    
        public Tblselectablecolumnjqgrid(int pageid, String pagename,
                String pagestatus) {
            this.pageid = pageid;
            this.pagename = pagename;
            this.pagestatus = pagestatus;
        }
    
        public int getPageid() {
            return this.pageid;
        }
    
        public void setPageid(int pageid) {
            this.pageid = pageid;
        }
    
        public String getPagename() {
            System.out.println("Called Getter Method");
            return "Called getter Method : " + this.pagename;
        }
    
        public void setPagename(String pagename) {
            this.pagename = pagename;
        }
    
        public String getPagestatus() {
            return this.pagestatus;
        }
    
        public void setPagestatus(String pagestatus) {
            this.pagestatus = pagestatus;
        }
    
        @Override
        public Tblselectablecolumnjqgrid clone() throws CloneNotSupportedException {
            Tblselectablecolumnjqgrid selBean = (Tblselectablecolumnjqgrid) super
                    .clone();
            selBean.setPageid(getPageid());
            selBean.setPagename(getPagename());
            selBean.setPagestatus(getPagestatus());
    
            return selBean;
        }
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + pageid;
            result = prime * result
                    + ((pagename == null) ? 0 : pagename.hashCode());
            result = prime * result
                    + ((pagestatus == null) ? 0 : pagestatus.hashCode());
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Tblselectablecolumnjqgrid other = (Tblselectablecolumnjqgrid) obj;
            if (pageid != other.pageid)
                return false;
            if (pagename == null) {
                if (other.pagename != null)
                    return false;
            } else if (!pagename.equals(other.pagename))
                return false;
            if (pagestatus == null) {
                if (other.pagestatus != null)
                    return false;
            } else if (!pagestatus.equals(other.pagestatus))
                return false;
            return true;
        }
    }
    

    主方法类

    package com.jackson;
    
    import java.io.IOException;
    import java.util.ArrayList;
    
    import org.codehaus.jackson.JsonGenerationException;
    import org.codehaus.jackson.map.JsonMappingException;
    import org.codehaus.jackson.map.ObjectMapper;
    
    import com.pojo.Tblselectablecolumnjqgrid;
    
    public class JacksonParser {
    
        public static void main(String args[]) throws JsonGenerationException,
                JsonMappingException, IOException, CloneNotSupportedException {
    
            ArrayList<Tblselectablecolumnjqgrid> selList = new ArrayList<Tblselectablecolumnjqgrid>();
    
            Tblselectablecolumnjqgrid selCol = new Tblselectablecolumnjqgrid();
            selCol.setPageid(4);
            selCol.setPagename("Test");
            selCol.setPagestatus("Test Status");
    
            selList.add(selCol);
            selList.add(selCol.clone());
            selList.add(selCol.clone());
            selList.add(selCol.clone());
    
            ObjectMapper om = new ObjectMapper();
    
            String writeValueAsString = om.writeValueAsString(selList);
            System.out.println("Result:    " + writeValueAsString);
        }
    }
    

    预期输出

    {“TOTAL”:1,“CURRENTPAGE”:1、“TOTALRECORDS”:6,“ROWS”:[{“pagename”:“Called getter Method:Test”,“pagestatus”:“Test Status”,“id”:4},{,“pagestatus”:“测试状态”,“id”:4}]}

    输出获取

    [{“pagename”:“被调用的getter方法:测试”,“pagestatus”:“测试状态”,“id”:4},{“page name”:

    1 回复  |  直到 9 年前
        1
  •  2
  •   Nishant    12 年前

    写一个包装像

    public class Wrapper {
      private int TOTAL;
      private int CURRENTPAGE;
      private int TOTALRECORDS;
      private List<Row> ROWS;
    
      //getters setters
    
    }
    
    public class Row {
      private String pagename;
      private String pagestatus;
      private int id;
    
      //getters setters
    }
    

    在你的主课堂上

    //populate Wrapper
    Wrapper wrap = new Wrapper();
    //set attributes and Rows
    ...
    String writeValueAsString = om.writeValueAsString(wrap);