zoukankan      html  css  js  c++  java
  • Json数据交换一Jackson

    依赖

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.5.3</version>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.5</version>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.9.5</version>
    </dependency>
    

    配置

    
            //序列化的时候序列对象的所有属性  (默认)
            objectMapper.setSerializationInclusion(Include.ALWAYS);  
    
            //反序列化的时候如果多了其他属性,不抛出异常  
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);  
    
            //如果是空对象的时候,不抛异常  
            objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);  
    
            //取消时间的转化格式,默认是时间戳,同时需要设置要表现的时间格式  
            objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);  
            objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    

    基本使用

    ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。 
    ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。 
    
             writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。
     
             writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。
     
             byte[] bytes = writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。 
    
             String text = writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。 
              
    
            ObjectMapper mapper = new ObjectMapper();  
              
            //User对象类转JSON  
            //输出结果:{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}  
            String json = mapper.writeValueAsString(user);  
              
            //Java集合转JSON  
            //输出结果:[{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}]  
            List<User> users = new ArrayList<User>();  
            users.add(user);  
            String jsonlist = mapper.writeValueAsString(users);  
    
            ObjectMapper支持从byte[]、File、InputStream、字符串等数据的JSON反序列化。 
            ObjectMapper mapper = new ObjectMapper();  
            User user = mapper.readValue(json, User.class); 
    

    集合的映射

    除了使用Java类进行映射之外,我们还可以直接使用Map和List等Java集合组织JSON数据
    Map<String, Object> map = mapper.readValue(text, new TypeReference<Map<String, Object>>() {});
    

    JSON注解

    
    @JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
    
    @JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
    
    @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,如@JsonProperty("name")。
    

    Bean工具类

    /**
     * bean转json格式或者json转bean格式, 项目中我们通常使用这个工具类进行json---java互相转化
     */
    public class JacksonUtil {
    	private static ObjectMapper mapper = new ObjectMapper();
     
    	public static String bean2Json(Object obj) throws IOException {
    		StringWriter sw = new StringWriter();
    		JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
    		mapper.writeValue(gen, obj);
    		gen.close();
    		return sw.toString();
    	}
     
    	public static <T> T json2Bean(String jsonStr, Class<T> objClass)
    			throws JsonParseException, JsonMappingException, IOException {
    		return mapper.readValue(jsonStr, objClass);
    	}
    }
    
  • 相关阅读:
    计算几何学习8
    c语言数据结构学习心得——队列
    c语言数据结构学习心得——栈
    c语言数据结构学习心得——数据结构基本概念
    c语言数据结构学习心得——图
    c语言数据结构学习心得——树
    c语言数据结构学习心得——二叉树
    c语言数据结构学习心得——线性表
    Asp.net 2.0 Webpart 数据库的迁移
    BUGReport:datagrid带模板列绑定空数据集出错的问题
  • 原文地址:https://www.cnblogs.com/loveer/p/11355060.html
Copyright © 2011-2022 走看看