項目中我們經常會使用到JSON的數據格式,這裏回顧了一下JSON相關的知識點。對日常使用到的JSON工具做一些簡單的補充。
1.JSON工具
1.1.fastjson工具包
在實際項目中我們經常會使用alibabba的fastjson來替代jackson的jar包,因爲fastjson已經集成了jackson的功能,用於前臺返回json string或者是JSON和Object Java對象
的互相轉換都有了非常靈活好用的API支持。
maven依賴的引入:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> </dependency>
1.2.ObjectMapper類
ObjectMapper類是jackson包中的一個用於將java實體類轉爲json的String字符串進行輸出的實用類。
這裏主要使用了其中的writeValueAsString方法。
@RestController @RequestMapping("/user") public class UserController { @RequestMapping("/json") public String jsonStr() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); User user = new User("楓夜Alex", 5, "男"); String value = mapper.writeValueAsString(user); return value; } @RequestMapping("/date") public String dateJsonStr() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); //不使用時間戳的方式 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); //自定義日期格式對象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //指定日期格式 mapper.setDateFormat(sdf); Date date = new Date(); String value = mapper.writeValueAsString(date); return value; } @RequestMapping("/dateutil") public String jsonUtil(){ ObjectMapper mapper = new ObjectMapper(); Date date = new Date(); String value = JsonUtils.getJson(date); return value; } }
封裝了一個JsonUtils類進行Date格式化轉換:
public class JsonUtils { public static String getJson(Object object) { return getJson(object,"yyyy-MM-dd HH:mm:ss"); } public static String getJson(Object object,String dateFormat) { ObjectMapper mapper = new ObjectMapper(); //不使用時間差的方式 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); //自定義日期格式對象 SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); //指定日期格式 mapper.setDateFormat(sdf); try { return mapper.writeValueAsString(object); } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } }
最後測試一下前端輸出:
1.3.對象與JSON的互轉
這裏主要是使用到fastjson的API,比較簡單,直接上代碼:
@SpringBootTest @RunWith(SpringJUnit4ClassRunner.class) public class JsonDemoApplicationTests { @Test public void contextLoads() { //創建一個對象 User user1 = new User("楓夜1號", 3, "男"); User user2 = new User("楓夜2號", 3, "男"); User user3 = new User("楓夜3號", 3, "男"); User user4 = new User("楓夜4號", 3, "男"); List<User> list = new ArrayList<User>(); list.add(user1); list.add(user2); list.add(user3); list.add(user4); System.out.println("*******Java對象 轉 JSON字符串*******"); String str1 = JSON.toJSONString(list); System.out.println("JSON.toJSONString(list)==>"+str1); String str2 = JSON.toJSONString(user1); System.out.println("JSON.toJSONString(user1)==>"+str2); System.out.println("\n****** JSON字符串 轉 Java對象*******"); User jp_user1=JSON.parseObject(str2,User.class); System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1); System.out.println("\n****** Java對象 轉 JSON對象 ******"); JSONObject object = (JSONObject)JSON.toJSON(user2); System.out.println("(JSONObject) JSON.toJSON(user2)==>"+object.getString("name")); System.out.println("\n****** JSON對象 轉 Java對象 ******"); User user = JSON.toJavaObject(object, User.class); System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+user); } }
博文參考:
https://mp.weixin.qq.com/s/RAqRKZJqsJ78HRrJg71R1g
https://www.runoob.com/json/json-tutorial.html