1 Maven概述
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
maven主要是用来解决包依赖问题。
在项目分服务开发中,之前大家是导入jar包来引入代码,可能存在不同服务相同功能使用不同版本,导致部分功能无法使用。
后引入maven项目管理工具,先可以将服务中的相同功能向上抽取,形成共性依赖maven-parent,各服务中依赖继承maven-parent,统一管理依赖,方便管理和维护,避免包依赖问题。
注意:将maven-parent打成pom包<
packaging>pom</packaging>
2 Jackson
概述:Jackson 是一个 Java 的用来处理 JSON 格式数据的类库
三大功能:
- jackson-core,核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。
- jackson-annotations,注解包,提供标准注解功能;
- jackson-databind ,数据绑定包, 提供基于"对象绑定" 解析的相关 API ( ObjectMapper ) 和"树模型" 解析的相关 API (JsonNode);基于"对象绑定" 解析的 API 和"树模型"解析的 API 依赖基于"流模式"解析的 API。
2.1 ObjectMapper
Jackson 最常用的 API 就是基于"对象绑定" 的 ObjectMapper。下面是一个 ObjectMapper 的使用的简单示例。
- ObjectMapper 通过 writeValue 系列方法 将 java 对 象序列化 为 json,并 将 json 存 储成不同的格式,String(writeValueAsString),Byte Array(writeValueAsString),Writer, File,OutStream 和 DataOutput。
- ObjectMapper 通过 readValue 系列方法从不同的数据源像 String , Byte Array, Reader,File,URL, InputStream 将 json 反序列化为 java 对象。
json与对象的转化:
package com.jt.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ObjectMapperUtil {
/**
*1.对象如何转化为JSON串的???
* 步骤:
* 1.获取对象的所有的getXXXX()方法.
* 2.将获取的getXXX方法的前缀get去掉 形成了json的key=xxx
* 3.通过getXXX方法的调用获取属性的值,形成了json的value的值.
* 4.将获取到的数据 利用json格式进行拼接 {key : value,key2:value2....}
* 2.JSON如何转化为对象???
* {lyj:xxx}
* 步骤:
* 1. 根据class参数类型,利用java的反射机制,实例化对象.
* 2. 解析json格式,区分 key:value
* 3. 进行方法的拼接 setLyj()名称.
* 4.调用对象的setXXX(value) 将数据进行传递,
* 5.最终将所有的json串中的key转化为对象的属性.
**/
private static final ObjectMapper MAPPER = new ObjectMapper();
//将对象转化为JSON
public static String toJSON(Object target){
try {
return MAPPER.writeValueAsString(target);
} catch (JsonProcessingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
//将JSON转化为对象
//需求: 如果用户传递什么类型,则返回什么对象
public static <T> T toObject(String json,Class<T> targetClass){
try {
return MAPPER.readValue(json, targetClass);
} catch (JsonProcessingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。