JSON 轉含有泛型屬性的物件

2022-03-16 22:43:07 字數 2442 閱讀 3184

在將 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);}}

正確轉換如下:

此時和只有乙個泛型物件時處理方式一樣

public

class

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

@data

class 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 型別:

private

static 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 類實...