在实际开发中通服都是使用JSON格式数据,那么如何跟JSON打交道呢,下面就写一些JSON的常用转换工具,以及JSON数据提取。
目录
阿里的FastJSON
JSONObject类
JSON类
JSONArray
JSONPath
JsonPath类
jackson
ObjectMapper
阿里的FastJSON
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
JSONObject类
/*map格式数据转jsonObject类*/
public JSONObject(java.util.Map<java.lang.String,java.lang.Object> map) { }
/*初始化创建JSONObject类*/
public JSONObject(int initialCapacity, boolean ordered) { }
/*JSONObject类是否包含该key*/
public boolean containsKey(java.lang.Object key) { }
/*JSONObject类是否包含该value*/
public boolean containsValue(java.lang.Object value) { }
/*JSONObject类获取key的value值*/
public java.lang.Object get(java.lang.Object key) { }
//JSONObject对象解析
public com.alibaba.fastjson.JSONObject getJSONObject(java.lang.String key) { }
/*JSONObject类 获取Value值是JSONArray的key*/
public com.alibaba.fastjson.JSONArray getJSONArray(java.lang.String key) { }
//提取JSON并映射到一个实体类上
public <T> T getObject(java.lang.String key, java.lang.Class<T> clazz) { }
public java.lang.Boolean getBoolean(java.lang.String key) { }
public java.sql.Timestamp getTimestamp(java.lang.String key) { }
public java.lang.Object put(java.lang.String key, java.lang.Object value) { }
public void putAll(java.util.Map<? extends java.lang.String,? extends java.lang.Object> m) { }
public void clear() {}
public java.lang.Object remove(java.lang.Object key) { }
public java.util.Collection<java.lang.Object> values() {}
public java.lang.Object clone() { }
public boolean equals(java.lang.Object obj) { /* compiled code */ }
public java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwable { /* compiled code */ }
JSON类
public static final java.lang.Object parse(java.lang.String text) { /* compiled code */ }
public static final java.lang.Object parse(java.lang.String text, int features) { }
//带格式返回
public static final java.lang.Object parse(byte[] input, com.alibaba.fastjson.parser.Feature... features) { /* compiled code */ }
public static final java.lang.Object parse(java.lang.String text, com.alibaba.fastjson.parser.Feature... features) { /* compiled code */ }
public static final com.alibaba.fastjson.JSONObject parseObject(java.lang.String text, com.alibaba.fastjson.parser.Feature... features) { /* compiled code */ }
public static final com.alibaba.fastjson.JSONObject parseObject(java.lang.String text) { /* compiled code */ }
public static final <T> T parseObject(java.lang.String text, java.lang.Class<T> clazz, com.alibaba.fastjson.parser.Feature... features) { /* compiled code */ }
public static final <T> T parseObject(java.lang.String text, com.alibaba.fastjson.TypeReference<T> type, com.alibaba.fastjson.parser.Feature... features) { /* compiled code */ }
public static final <T> T parseObject(java.lang.String input, java.lang.reflect.Type clazz, com.alibaba.fastjson.parser.Feature... features) { /* compiled code */ }
public static final <T> T parseObject(java.lang.String text, java.lang.Class<T> clazz) { /* compiled code */ }
public static final com.alibaba.fastjson.JSONArray parseArray(java.lang.String text) { /* compiled code */ }
public static final <T> java.util.List<T> parseArray(java.lang.String text, java.lang.Class<T> clazz) { /* compiled code */ }
public static final java.lang.String toJSONString(java.lang.Object object, com.alibaba.fastjson.serializer.SerializerFeature... features) { /* compiled code */ }
public static final java.lang.String toJSONString(java.lang.Object object, boolean prettyFormat) { /* compiled code */ }
public static final void writeJSONStringTo(java.lang.Object object, java.io.Writer writer, com.alibaba.fastjson.serializer.SerializerFeature... features) { /* compiled code */ }
JSONArray
public JSONArray(java.util.List<java.lang.Object> list) { /* compiled code */ }
public JSONArray(int initialCapacity) { /* compiled code */ }
public int size() { /* compiled code */ }
public boolean isEmpty() { /* compiled code */ }
public boolean contains(java.lang.Object o) { /* compiled code */ }
public java.util.Iterator<java.lang.Object> iterator() { /* compiled code */ }
public <T> T[] toArray(T[] a) { /* compiled code */ }
public java.lang.Object[] toArray() { /* compiled code */ }
public boolean add(java.lang.Object e) { /* compiled code */ }
public boolean remove(java.lang.Object o) { /* compiled code */ }
public boolean containsAll(java.util.Collection<?> c) { /* compiled code */ }
public boolean addAll(java.util.Collection<? extends java.lang.Object> c) { /* compiled code */ }
public boolean addAll(int index, java.util.Collection<? extends java.lang.Object> c) { /* compiled code */ }
public boolean retainAll(java.util.Collection<?> c) { /* compiled code */ }
public boolean removeAll(java.util.Collection<?> c) { /* compiled code */ }
public java.lang.Object set(int index, java.lang.Object element) { /* compiled code */ }
public void add(int index, java.lang.Object element) { /* compiled code */ }
public java.lang.Object get(int index) { /* compiled code */ }
public com.alibaba.fastjson.JSONObject getJSONObject(int index) { /* compiled code */ }
JSONPath
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</dependency>
JsonPath类
public <T> T read(java.lang.Object jsonObject) { /* compiled code */ }
public <T> T set(java.lang.Object jsonObject, java.lang.Object newVal, com.jayway.jsonpath.Configuration configuration) { /* compiled code */ }
public <T> T read(java.lang.String json) { /* compiled code */ }
public <T> T add(java.lang.Object jsonObject, java.lang.Object value, com.jayway.jsonpath.Configuration configuration) { /* compiled code */ }
public static com.jayway.jsonpath.DocumentContext parse(java.lang.String json) { /* compiled code */ }
public static com.jayway.jsonpath.DocumentContext parse(java.lang.Object json, com.jayway.jsonpath.Configuration configuration) { /* compiled code */ }
public static com.jayway.jsonpath.DocumentContext parse(java.net.URL json) throws java.io.IOException { /* compiled code */ }
实例:
public static String jsonFromJsonPath(String json, String path) {
try {
String rs = JsonPath.read(json, path);
return rs;
} catch (Exception e) {
log.info("---jsonpath解析出错- {}--", e.getMessage());
}
return null;
}
jackson
<!-- json包 jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.5</version>
</dependency>
ObjectMapper
public static ObjectMapper objectMapper = new ObjectMapper();
public <T> T readValue(JsonParser p, Class<T> valueType)
throws IOException, JsonParseException, JsonMappingException
public <T> T readValue(JsonParser p, JavaType valueType)
throws IOException, JsonParseException, JsonMappingException
public <T extends TreeNode> T readTree(JsonParser p)
throws IOException, JsonProcessingException
public void writeValue(JsonGenerator g, Object value)
throws IOException, JsonGenerationException, JsonMappingException
public <T> T readValue(File src, Class<T> valueType)
throws IOException, JsonParseException, JsonMappingException
public <T> T readValue(File src, JavaType valueType)
throws IOException, JsonParseException, JsonMappingException
public <T> T readValue(URL src, Class<T> valueType)
throws IOException, JsonParseException, JsonMappingException
public <T> T readValue(String content, Class<T> valueType)
throws IOException, JsonParseException, JsonMappingException
public <T> T readValue(InputStream src, Class<T> valueType)
throws IOException, JsonParseException, JsonMappingException
public void writeValue(File resultFile, Object value)
throws IOException, JsonGenerationException, JsonMappingException
public void writeValue(OutputStream out, Object value)
throws IOException, JsonGenerationException, JsonMappingException
public String writeValueAsString(Object value)
throws JsonProcessingException
public byte[] writeValueAsBytes(Object value)
throws JsonProcessingException
public ObjectWriter writer()
public ObjectWriter writer(SerializationFeature feature)
public class JSONUtils {
//静态
public static ObjectMapper objectMapper = new ObjectMapper();
/**
* json结果集转对象
* @param jsonData
* @param beanType
* @param <T>
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = objectMapper.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将字符串数组转换为object数组
* @param <T>
* @Author 鹿少年 2020年9月18日 上午9:29:09
* @param jsonData
* @param beanType
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T[] JsonArrayStringToObajectArray(String jsonData, Class<T[]> beanType) {
T[] array = null;
try {
array = (T[]) objectMapper.readValue(jsonData, beanType);
} catch (IOException e) {
e.printStackTrace();
}
return array;
}
/**
* 将json数据转换成pojo对象list
* @Author 鹿少年 2020年9月18日 下午1:46:45
* @param jsonData
* @param beanType
* @return
*/
public static <T> List<T> jsonArrayToList(String jsonData, Class<T[]> beanType) {
try {
return Arrays.asList(objectMapper.readValue(jsonData, beanType));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* jsonarray转list,不可以转map
* @Author 鹿少年 2020年9月18日 下午1:11:20
* @param jsonData
* @param T
* @return
*/
public static <T> List<T> JsonArrayToList(String jsonData, TypeReference T) {
try {
return (List<T>) objectMapper.readValue(jsonData, T);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}