• 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);
    	}
    }
    
  • 相关阅读:
    ArcEngine做栅格数据拉伸
    http://webhelp.esri.com/arcgisexplorer/2500/zhCN/index.html#add_raster_data.htm
    ArcEngine 9.3 学习笔记(六):图层符号化(COlorRamp,MarkerSymbol,LineSymbol,FillSymbol,TextSymbol,3DChartSymbol,使用ServerStyle符号库,FeatureRender,RasterRender)
    代码社区
    有关文件夹与文件的查找,删除等功能 在 os 模块中实现
    sar
    【深度长文】国内外雷达发展简况
    符号化Symbol(符号)体系
    ArcGIS Engine DEM拉伸渲染
    IIS 服务器应用程序不可用 解决办法
  • 原文地址:https://www.cnblogs.com/loveer/p/11355060.html
Copyright © 2020-2023  润新知