在將 json 字串轉為物件時,如果物件含有泛型,在進行轉換時需要指明泛型型別。
/**正確轉換如下:* @describe:
* @author: chenfan
* @date: 2019/5/9 19:15 */
@data
/*** 含有泛型屬性的物件 */
class onegeneric
@data
/*** 泛型物件 */
class
keymessage
public
class
jsontest ,"ss": "ssvalue"}
string data = ",\"ss\": \"ssvalue\"}";
gson gson = new
gson();
//onegeneric : 外層物件型別 keymessage :巢狀的泛型型別
onegeneric one = gson.fromjson(data, new typetoken>() {}.gettype());
system.out.println(one);}}
此時和只有乙個泛型物件時處理方式一樣
publicclass
jsontest ,]}
string data = ",]}";
gson gson = new
gson();
onegeneric grandmessage = gson.fromjson(data, new typetoken>() {}.gettype());
system.out.println(grandmessage);
}}/**
* 含有泛型屬性的物件 */
@data
class onegeneric
@data
class
generic
/*** @describe:
* @author: chenfan
* @date: 2019/5/9 19:15 */
@data
/*** 含有多個泛型屬性的物件 */
class grandmessage
/*** 泛型物件 */
@data
class
keymessage
/*** 泛型物件 */
@data
class
valuemessage
/*** 測試類 */
public
class
jsontest ,"value": }
string data = ",\"value\": }";
gson gson = new
gson();
grandmessage grandmessage = gson.fromjson(data, new typetoken>() {}.gettype());
system.out.println(grandmessage);}}
在進行物件轉換時, typetoken> 中的泛型型別順序必須按照 grandmessage中宣告的順序,否則會物件屬性全部為null
@dataclass grandmessage
@data
class onegeneric
@data
class
generic
/*** 測試類 */
public
class
jsontest }}
string data = "}}";
gson gson = new
gson();
//轉換時的泛型順序一定要嚴格按照物件的巢狀順序
grandmessage grandmessage = gson.fromjson(data, new typetoken>>() {}.gettype());
system.out.println(grandmessage);}}
json轉物件時,如果物件某個屬性不確定(比如物件定義為object,實際為 int 型別),需要自定義轉換邏輯
顯示指定 opsessioncontrolmessage 的 messageid 為 int 型別:
privatestatic gson gson2 = new
gsonbuilder()
.registertypeadapter(
new typetoken(){}.gettype(),
new jsondeserializer()
}return
message;
}}).create();
Fastjson 泛型 json 轉 物件
通過泛型,將具有相同規律的json串,解析為同乙個物件。1 查詢student物件返回的json串 message 查詢成功 查詢teacher返回的json串。message 查詢成功 2 構建實體類 student類 data是lombok外掛程式的註解 data public class st...
泛型 定義和使用含有泛型的方法
定義和使用含有泛型的方法 泛型定義在方法的修飾符和返回值型別之間 格式 修飾符 返回值型別 方法名 引數列表 使用泛型 含有泛型的方法,在呼叫方法的時候確定泛型的資料型別 傳遞什麼型別的引數,泛型就是什麼型別 例如 public class genericmethod 定義乙個含有泛型的靜態方法 p...
泛型 定義和使用含有泛型的介面
示例 author jason date 2019 9 12 10 59 version 1.0 public inte ce genericinte ce 含有泛型的介面,第一種使用方式 定義介面的實現類,實現介面,指定介面的泛型。public inte ce iteratorscanner 類實...