Java中的json轉(zhuǎn)換有些時(shí)候我們需要將json轉(zhuǎn)為泛型類,對(duì)于這種情況我們可以使用TypeReference類來實(shí)現(xiàn),以下是一個(gè)簡(jiǎn)單的示例:
public static <T> T jsonToObject(String jsonString, TypeReference<T> typeReference) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(jsonString, typeReference); }
以上代碼中的jsonToObject方法是一個(gè)通用的json轉(zhuǎn)對(duì)象方法,其中typeReference參數(shù)用于指定泛型類的類型。下面舉一個(gè)實(shí)際使用的例子:
public class User { private String name; private int age; private List<String> hobbyList; //省略Get/Set方法 } public static void main(String[] args) { String jsonStr = "{\"name\":\"張三\",\"age\":18,\"hobbyList\":[\"游泳\",\"跳舞\"]}"; try { User user = jsonToObject(jsonStr, new TypeReference<User>() {}); System.out.println(user.getName()); System.out.println(user.getAge()); System.out.println(user.getHobbyList()); } catch (IOException e) { e.printStackTrace(); } }
以上示例中的jsonStr表示的是一個(gè)用戶對(duì)象的json串,我們使用了剛才預(yù)先寫好的jsonToObject方法將其轉(zhuǎn)為User對(duì)象,并打印出了User對(duì)象的相關(guān)屬性。事實(shí)上,TypeReference類可以支持更為復(fù)雜的泛型類型,比如Map<String,Object>、List<Map<String,Object>>等等,只需要在TypeReference<T>中指定相應(yīng)的泛型即可。