fastjson简单用法
在处理前后端数据时经常需要将json转成java对象,或者将java对象转成json,下面简单介绍下如何使用fastjson进行两者间的转化。
json字符串转java对象
fastjson中定义了一个JSONObject对象,它有很多方法能实现json字符串和java对象的转化,如下:
String str = "{\"name\":\"tom\",\"age\":\"12\"}";
//json字符串转化成json对象
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println(jsonObject.get("name"));
System.out.println(jsonObject.getInteger("age"));
//json字符串转化成java对象
HashMap map = JSONObject.parseObject(str, HashMap.class);
System.out.println(map.get("name"));
有时候可能是一个json数组字符串,这时可以将其转化成list集合的形式,如下:
//json数组转成java集合
String strArr = "[{\"name\":\"tom\",\"age\":\"12\"},{\"name\":\"jerry\",\"age\":\"10\"}]";
List<Map> list = JSONArray.parseArray(strArr, Map.class);
System.out.println(list.toString());
java对象转json字符串
这个就更简单了,一个方法搞定,如下:
map转json字符串:
//java对象转json对象
Map<String,String> mapObj = new HashMap<>();
mapObj.put("name","tom");
mapObj.put("age","12");
System.out.println(JSONObject.toJSONString(mapObj));
List转json字符串:
//List<Map>转json字符串
List<Map<String,String>> mapList = new ArrayList<>();
Map<String,String> mapObj = new HashMap<>();
mapObj.put("name","tom");
mapObj.put("age","12");
Map<String,String> mapObj1 = new HashMap<>();
mapObj1.put("name","jerry");
mapObj1.put("age","10");
mapList.add(mapObj);
mapList.add(mapObj1);
System.out.println(JSONArray.toJSONString(mapList));
自定义的java类转json字符串:
//自定义java类转json字符串
public class Student {
private String name;
private String sex;
private int age;
public Student(String name,String sex,int age) {
this.name = name;
this.sex = sex;
this.age =age;
}
}
Student student = new Student("tom","boy",12);
System.out.println(JSONObject.toJSONString(student));
在将自定义类转换为json字符串时,还可以使用注解定义json串的格式,例如:
public class Student {
@JSONField(name="NAME", serialize=false, ordinal = 1)
private String name;
@JSONField(name="SEX", serialize=false, ordinal = 2)
private String sex;
@JSONField(name="AGE", serialize=false, ordinal = 3)
private int age;
@JSONField(name="BIRTHDAY", format="dd/MM/yyyy", ordinal = 4)
private Date birthday;
}
其中:
- name用来指定key的名称
- ordinal用来指定属性在json字符串中的顺序
- serialize用来标记属性是否要序列化
- format用来格式化数据
日期在数据传输中一直是个让人头疼的问题,而format很好的解决了它。
需要注意:在使用@JSONField注解时一定要为私有属性添加get和set方法