jackson - 대상과 json 사이의 전환

7836 단어
//1.    XML          ,   json  ,json   text/html
  Jackson   :
public class TestJackson {

    /**          json*/
    @Test
    public void test01() {
        StringWriter out=new StringWriter();
        JsonGenerator jg=null;
        try {
            //1.  JsonFactory
            JsonFactory jf=new JsonFactory();
            //2.  JsonGenerator
            jg=jf.createGenerator(out);
                //             
            jg.useDefaultPrettyPrinter();
            //3.  ObjectMapper,  ObjectMapper    
            ObjectMapper mapper=new ObjectMapper();
            
            User u=new User(1,"   ","123",new Group(1,"   "));
            mapper.writeValue(jg, u);
            System.out.println(out.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                if(jg!=null) jg.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    /**   List   json*/
    @Test
    public void test02() {
        StringWriter out=new StringWriter();
        JsonGenerator jg=null;
        try {
            //1.  JsonFactory
            JsonFactory jf=new JsonFactory();
            //2.  JsonGenerator
            jg=jf.createGenerator(out);
                //             
            //jg.useDefaultPrettyPrinter();
            //3.  ObjectMapper,  ObjectMapper    
            ObjectMapper mapper=new ObjectMapper();
            List<User> us=new ArrayList<User>();
            User u=new User(1,"   ","123",new Group(1,"   "));
            us.add(u);
            u=new User(2,"   ","123",new Group(1,"   "));
            us.add(u);
            u=new User(3,"   ","123",new Group(1,"   "));
            us.add(u);
            mapper.writeValue(jg, us);
            System.out.println(out.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                if(jg!=null) jg.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**   json        */
    @Test
    public void test03(){
        try {
            String json="{\"id\":1,\"username\":\"  \",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"   \"}}";
            ObjectMapper mapper=new ObjectMapper();
            User u=mapper.readValue(json,User.class);
            System.out.println(u.getId()+","+u.getUsername()+","+u.getPassword()+","+u.getGroup().getName());
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
    
    /**   json      List*/
    @Test
    public void test04(){
        try {
            String json="[{\"id\":1,\"username\":\"   \",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"   \"}},{\"id\":2,\"username\":\"   \",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"   \"}},{\"id\":3,\"username\":\"   \",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"   \"}}]";
            ObjectMapper mapper=new ObjectMapper();
    // json   List   ,      Bean  ,list   Map  
            /*List<User> us=mapper.readValue(json,List.class);
            System.out.println(us.size());
            for(User u:us){
                System.out.println(u.getUsername());
            }*/
            /*  json    map    ,      bean,     ,
             *          ,           ,             */
            List<Map<String,Object>> us=mapper.readValue(json,List.class);
            for(Map<String,Object> m:us){
                System.out.println(m.get("username"));
                System.out.println(m.get("group"));
            }
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**Jackson              */
    @Test
    public void test05(){
        try {
            String json="[{\"id\":1,\"username\":\"   \",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"   \"}},{\"id\":2,\"username\":\"   \",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"   \"}},{\"id\":3,\"username\":\"   \",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"   \"}}]";
            ObjectMapper mapper=new ObjectMapper();
            JsonNode node=mapper.readTree(json);
            //           
            System.out.println(node.isArray());
            System.out.println(node.size());
            System.out.println(node.get(0).get("username"));
            System.out.println(node.get(0).get("group").get("name"));
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**  JacksonUtil List   json*/
    @Test
    public void test02_1() {
        List<User> us=new ArrayList<User>();
        User u=new User(1,"   ","123",new Group(1,"   "));
        us.add(u);
        u=new User(2,"   ","123",new Group(1,"   "));
        us.add(u);
        u=new User(3,"   ","123",new Group(1,"   "));
        us.add(u);
        System.out.println(JacksonUtil.getInstance().obj2json(us));
    }

}
////////////////////////////////////////////////////
public class JacksonUtil {

    private static JacksonUtil ju;
    private static JsonFactory jf;
    private static ObjectMapper mapper;
    private JacksonUtil(){}
    public static JacksonUtil getInstance(){
        if(ju==null) ju=new JacksonUtil();
        return ju;
    }
    
    public static ObjectMapper getMapper(){
        if(mapper==null){
            mapper=new ObjectMapper();
        }
        return mapper;
    }
    
    public static JsonFactory getFactory(){
        if(jf==null) jf=new JsonFactory();
        return jf;
    }
    
    public String obj2json(Object obj){
        JsonGenerator jg=null;
        try {
            jf=getFactory();
            mapper=getMapper();
            StringWriter out=new StringWriter(); 
            jg=jf.createGenerator(out);
            mapper.writeValue(jg,obj);
            return out.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                if(jg!=null) jg.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    
    public Object json2obj(String json,Class<?> clz){
        try {
            mapper=getMapper();
            return mapper.readValue(json,clz);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

좋은 웹페이지 즐겨찾기