【java框架】SpringMVC(4) -- JSON相關的數據返回

項目中我們經常會使用到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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章