基於Jackson的JsonUtil實現字串與物件之間的轉換
比較好用的工具類,要匯入Jackson-mapper-asl依賴。詳細看程式碼,其中DateTimeUtil是另外的工具類。
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
import org.codehaus.jackson.type.JavaType;
import org.codehaus.jackson.type.TypeReference;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**
* Created by xcw on 2018/3/30.
*/
@Slf4j
public class JsonUtil {
private static ObjectMapper objectMapper = new ObjectMapper();
static {
// 物件的所有欄位全部列入
objectMapper.setSerializationInclusion(Inclusion.ALWAYS);
// 取消預設轉換timestamps形式
objectMapper.configure(SerializationConfig.Feature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);
// 忽略空Bean轉Json的錯誤
objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
// 所有日期格式統一為 yyyy:MM:dd HH:mm:ss
objectMapper.setDateFormat(new SimpleDateFormat(DateTimeUtil.STANDARD_FORMAT));
// 忽略在Json字串中存在,但在Java物件中不存在的對應屬性的狀況,防止錯誤
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
/**
* 物件返回Json字串
* @param obj
* @param <T>
* @return
*/
public static <T> String obj2String(T obj) {
if (obj == null) {
return null;
}
try {
return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);
} catch (Exception e) {
log.warn("Parse object to String error", e);
return null;
}
}
/**
* 物件返回格式化後的Json字串
* @param obj
* @param <T>
* @return
*/
public static <T> String obj2StringPretty(T obj) {
if (obj == null) {
return null;
}
try {
return obj instanceof String ? (String) obj : objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
} catch (Exception e) {
log.warn("Parse Object to String error", e);
return null;
}
}
/**
* Json字串轉成物件
* @param str
* @param clazz
* @param <T>
*/
public static <T> T string2Obj(String str, Class<T> clazz) {
if (StringUtils.isEmpty(str) || clazz == null) {
return null;
}
try {
return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);
} catch (Exception e) {
log.warn("Parse String to Object error", e);
return null;
}
}
/**
* 泛型反序列化
* @param str
* @param typeReference 對應返回值的型別
* @param <T>
* @return
*/
public static <T> T string2Obj(String str, TypeReference<T> typeReference) {
if (StringUtils.isEmpty(str) || typeReference == null) {
return null;
}
try {
return (T) (typeReference.getType().equals(String.class) ? str : objectMapper.readValue(str, typeReference));
} catch (IOException e) {
log.warn("Parse String to Object error", e);
return null;
}
}
/**
* 泛型反序列化
* @param str
* @param collectionClass 集合的型別
* @param elementClasses 集合中元素的型別
* @param <T>
* @return
*/
public static <T> T string2Obj(String str, Class<?> collectionClass, Class<?>... elementClasses) {
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
try {
return objectMapper.readValue(str, javaType);
} catch (IOException e) {
log.warn("Parse String to Object error", e);
return null;
}
}
}
相關推薦
基於Jackson的JsonUtil實現字串與物件之間的轉換
比較好用的工具類,要匯入Jackson-mapper-asl依賴。詳細看程式碼,其中DateTimeUtil是另外的工具類。 import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.
gson實現字串與物件的相互轉換
最近一個專案需要用到JSON,需要在JSON字串和物件之間相互轉換,在網上找了些資料,發現google的Gson還是比較不錯的。 廢話不說,下面是簡單的例子: 先上原始碼:下載(包含jar包) Person實體類 [java] view plain copy print?package com.hsu
基於Intent實現Activity與Activity之間的數據傳遞,實現二個Activity的跳轉功能
set second start pub category 方式 nds efi dac 在講參數傳遞之前,先講下intent的定義: Intent intent = new Intent(MainActivity.this,SecondActivity.class
使用jackson實現字串跟json之間轉換
1.pom.xml配置 <jackson-version>2.3.3</jackson-version> <!-- json analyz --> <dependency> <groupId>com.fasterxml.j
javascript json字串與物件相互轉換
在實際專案中,經常遇到字元格式的問題,記下來以便日後方便檢視。用到兩個函式:JSON.stringify() 和 JSON.parse()。 使用ajax向後臺請求資料,後臺給前端返回資料,明明後端指令碼寫的是json函式處理後的json格式,但是前端接收資料時,卻時而是
python實現字串與二進位制相互轉換
#Convert a string to a binary def encode(Target_string): return ’ ‘.join([bin(ord©).replace(‘0b’, ‘’) for c in Target_string]) #Convert binary to
JAXB實現xml與物件互相轉換
不需要引入任何外部jar包,JAXB自jdk1.5就已被整合,jdk1.7已升級為JAXB2。 1.xml報文 <?xml version="1.0" encoding="UTF-8"?> <root xmlns="urn:iso:std:iso:20022:tec
基於haneWIN實現windows與linux之間檔案共享
一、haneWIN簡介 1、haneWIN是在windows系統上搭建NFS Server的軟體。 2、NFS是網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應
利用Google Gson實現JSON字串和物件之間相互轉換
最近一個專案需要用到JSON,需要在JSON字串和物件之間相互轉換,在網上找了些資料,發現google的Gson還是比較不錯的。 廢話不說,下面是簡單的例子: 先上原始碼:下載(包含jar包) Person實體類 package com.hsun.json; /** * Pe
C#實現Stream與byte[]之間的轉換實例教程
inpu more family get this splay 登錄 line mem 本文以實例形式詳細介紹了C#實現Stream與byte[]之間的轉換的方法,分享給大家供大家參考之用。具體方法如下: 一、二進制轉換成圖片 MemoryStream ms = new
字串與陣列之間的互相轉換
將物件或者陣列或者物件陣列轉換成字串------JSON.stringify let obj= {name:'ming',age:18} console.log(JSON.stringify(obj)); let obj= [{name:'ming'
PHP陣列與物件之間相互轉換
/** * 陣列 轉 物件 * * @param array $arr 陣列 * @return object */ function ar
python3 json 與 物件之間的相互轉換
原文地址:http://blog.csdn.net/leilba/article/details/50654256 真的很感謝 # -*- coding: UTF-8 -*- import json #自定義類 class MyClass:
java json字串與物件轉換
下載引入包gson-2.0.jar 1.字元轉資料 final Map map = new HashMap();map.put("contents", "[{\"Id\":\"111\",\"AcceptNum\":222,\"ArchiveNum\":
javaWeb前後端中 JSON&JSON字串&java實體物件 之間轉換
JSON是前端js語言中, 用來與其他語言互動的一種輕量級的資料交換格式, 交換時以字串形式傳遞, 各語言再進行解析即可使用; 相比於XML語言, JSON用來傳輸資料, 層次結構清晰簡單, 目前已基本取代XML, 廣泛被用來跨語言傳輸資料;
利用operator實現字串與數字的通用轉換
利用operator來進行類型別的隱式轉換,在類中實現operator T,即可將類型別轉為T型別 template <typename T> class string_cast { public: string_cast(const std::
json與物件之間的相互轉換
1,將實體類的每個屬性以鍵值對的形式發到map中 ErrorCode code =new ErrorCode(1, "SUCCESS"); JSONObject json=JSONObject.fromObject(co
字串與整數之間的轉換
最近經常用到字串與整數之間的轉換,整理了一下,包含 1、檢驗是否為整數 2、字串轉為整數 3、從字串中提取數字 直接上程式碼: /** * 檢查是否為INT型別,已經對空進行處理 */ public static boolean isInt(
用Gson實現json與物件、list集合之間的相互轉化
先寫一個Person實體類,匯入Gson包 String jsonData="{\"userid\":\"1881140130\"}";//第一種寫法 //1.把json轉化為一
基於jackson的Json與物件的互相轉換
在JavaWeb開發中,經常會涉及到相關的json與物件的互相轉化問題,下面我就將其轉化的過程中可能遇到的情況一一寫出。 新增依賴 jackson依賴 <!--jackson--> <depend