发现好多公司都要求用json格式传输数据,所以研究一下,先贴上pom(FastJson):
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.23</version>
</dependency>
介绍几种常用的方法:
map转json
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
map.put("username","admin");
map.put("password","123456");
//map转json
String json = JSON.toJSONString(map);
System.out.println(map);
System.out.println(json);
}
打印:
{password=123456, username=admin}
{"password":"123456","username":"admin"}
除了可以将map
转成json之外,还可以将自定义javaBean
、List
转为json。
将日期进行格式化:
public static void main(String[] args) {
Date time = new Date();
System.out.println("未处理格式:" + time);
String dateJson = JSON.toJSONString(new Date());
System.out.println("json格式化:" + dateJson);
String date = JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);
System.out.println(date);
}
打印结果:
未处理格式:Sat Feb 24 20:06:58 CST 2018
json格式化:1519474018080
"2018-02-24 20:06:58"
使用谷歌的gson,pom如下(Gson):
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
个人感觉Gson还是比较强大的,我们先看下面的代码:
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("name", "过河");
map.put("age", "22");
map.put("sex", null);
String jsonString = new Gson().toJson(map);
System.err.println(jsonString);
}
打印的结果可能会让我们意想不到:
{"name":"过河","age":"22"}
对,使用Gson
的toJson
方法会把值为null
的参数忽略掉,导致并没有显示出来,那么我们如果想要显示出null
值的话,应该怎样做呢?
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("name", "过河");
map.put("age", "22");
map.put("sex", null);
Gson gson = new GsonBuilder().serializeNulls().create();
String jsonString = gson.toJson(map);
System.out.println(jsonString);
}
结果:
{"sex":null,"name":"过河","age":"22"}
总的来说这也算是一个不容易被发现的特点吧,如果到了开发中很难被察觉出来,先了解一下喽,以后在详细了解下工作中常用的使用方法。
注:传说阿里的FastJson效率会比谷歌的Gson效率高。