一、快速了解JSONObject.parseObject
在Java中,如果要將JSON字符串轉換成Java對象,可以使用com.alibaba下的fastjson庫。其中,JSONObject.parseObject是將JSON字符串轉換成Java對象的核心方法。下面將從多個方面對parseObject做詳細闡述。
二、解析JSON字符串
JSONObject.parseObject方法是用於解析JSON字符串的。假設有一個JSON字符串如下所示:
{ "name":"張三", "age":20, "address":{ "province":"廣東", "city":"深圳" } }
如果要將上述JSON字符串轉換為Java對象,可以使用以下代碼:
String jsonStr = "{\"name\":\"張三\",\"age\":20,\"address\":{\"province\":\"廣東\",\"city\":\"深圳\"}}"; JSONObject jsonObj = JSONObject.parseObject(jsonStr);
上面的代碼中,先將JSON字符串定義成一個字符串變量,再將其傳入parseObject方法中。執行JSONObject.parseObject之後,得到的結果為一個JSONObject類型的對象,即可通過get方法獲取其中的屬性值。
三、解析指定類型的JSON字符串
JSONObject.parseObject方法還支持將JSON字符串轉換為指定類型的Java對象。比如有一個Student類如下所示:
public class Student { private String name; private int age; private Address address; // 省略getter/setter方法 } public class Address { private String province; private String city; // 省略getter/setter方法 }
如果要將上述JSON字符串轉換為Student對象,可以使用以下代碼:
String jsonStr = "{\"name\":\"張三\",\"age\":20,\"address\":{\"province\":\"廣東\",\"city\":\"深圳\"}}"; Student student = JSONObject.parseObject(jsonStr, Student.class);
上述代碼中,將JSON字符串和Student.class作為參數傳入JSONObject.parseObject方法中。注意:Student類中的屬性名稱必須與JSON字符串中的屬性名稱一致,否則轉換會失敗。
四、解析帶有日期格式的JSON字符串
如果JSON字符串中包含日期格式的屬性,可以在轉換時指定日期格式。比如JSON字符串如下所示:
{ "name":"張三", "age":20, "birthday":"1999-01-01", "address":{ "province":"廣東", "city":"深圳" } }
如果要將上述JSON字符串轉換為Java對象,可以使用以下代碼:
String jsonStr = "{\"name\":\"張三\",\"age\":20,\"birthday\":\"1999-01-01\",\"address\":{\"province\":\"廣東\",\"city\":\"深圳\"}}"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); JSON.parseObject(jsonStr, Student.class, new Feature[]{Feature.AllowISO8601DateFormat}); Student student = JSONObject.parseObject(jsonStr, Student.class, new JsonD
上述代碼中,使用SimpleDateFormat定義日期格式並傳入JSON.parseObject方法中,再將返回的結果轉換為Student對象。也可以使用FastJson提供的JsonDateFormateFeature特性,通過Feature.AllowISO8601DateFormat指定日期格式,這樣在轉換時就可以自動識別日期格式並轉換為指定的Java Date類型。
五、解析帶有特殊符號的JSON字符串
如果JSON字符串中包含特殊符號,可以使用Unicode編碼來進行轉換。比如JSON字符串如下所示:
{ "name":"張三", "interest":"籃球\u270B" }
如果要將上述JSON字符串轉換為Java對象,可以使用以下代碼:
String jsonStr = "{\"name\":\"張三\",\"interest\":\"籃球\\u270B\"}"; Student student = JSONObject.parseObject(jsonStr, Student.class, Feature.SupportUnicode);
上述代碼中,通過Feature.SupportUnicode指定轉換時需要支持Unicode編碼,這樣特殊符號會被正確轉換為Java字符串類型。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/280734.html