阿里巴巴FastJson包的使用心得
- 1.FastJson简介
- 2.FastJson特性
- 3.引入FastJson
- 4.FastJson中的一些对象
- (1)JSONObject
- (2)JSONArray
- (3)SerializeWriter
- 4.FastJson中的一些操作
- (1) 将JavaBean序列化为格式化后的JSON文本
- (2) 将对象转为非格式化的JSON文本
- (3) JSON转JavaBean
- (4)从json中获取属性
- (5)json转换为List
- (6)json转Map
- (7)json转Set
- (8)去除json对象中某个属性
- (9)向JSON对象中添加属性
- (10)修改Json对象中的属性
- (11)判断JSON对象中是否存在某个属性
- (12) Json中日期格式的处理
1.FastJson简介
- Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
- Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
2.FastJson特性
- 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON
字符串转换成对象。- 允许转换预先存在的无法修改的对象(只有class、无源代码)。
- Java泛型的广泛支持。
- 允许对象的自定义表示、允许自定义序列化类。
- 支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。
3.引入FastJson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
4.FastJson中的一些对象
(1)JSONObject
JSONObject相当于Map<String,Object>,例如:
String jsonText = "{\n" +
"\t\"field1\":\"1\",\n" +
"\t\"field2\":\"2\"\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
System.out.println(jsonObject.get("field1"));
输出结果:
(2)JSONArray
JSONArray 相当于 List < Object >,例如:
String jsonText = "[{\"field1\":\"1\",\"field2\":\"2\"},{\"field1\":\"3\",\"field2\":\"3\"}]";
JSONArray jsonArray = JSONObject.parseArray(jsonText);
for (Object o : jsonArray) {
System.out.println(o);
}
输出结果:
(3)SerializeWriter
SerializeWriter 相当于 StringBuffer,例如:
SerializeWriter serializeWriter = new SerializeWriter();
serializeWriter.append("[");
serializeWriter.append("{");
serializeWriter.append("'field1':'1','field2':2");
serializeWriter.append("}");
serializeWriter.append("]");
String jsonText = serializeWriter.toString();
System.out.println(jsonText);
输出结果:
4.FastJson中的一些操作
创建一个内部类用来测试
static class TestObject{
private String field1;
private String field2;
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
public String getField2() {
return field2;
}
public void setField2(String field2) {
this.field2 = field2;
}
public TestObject() {
}
public TestObject(String field1, String field2) {
this.field1 = field1;
this.field2 = field2;
}
@Override
public String toString() {
return "TestObject{" +
"field1='" + field1 + '\'' +
", field2='" + field2 + '\'' +
'}';
}
}
(1) 将JavaBean序列化为格式化后的JSON文本
TestObject testObject = new TestObject("1","2");
String jsonString = JSONObject.toJSONString(testObject, true);
System.out.println(jsonString);
输出结果:
(2) 将对象转为非格式化的JSON文本
List<TestObject> list = Arrays.asList(new TestObject("1", "2"), new TestObject("3", "3"));
String jsonString = JSONObject.toJSONString(list, false);
System.out.println(jsonString);
输出结果:
(3) JSON转JavaBean
String jsonText = "{\n" +
"\t\"field1\":\"1\",\n" +
"\t\"field2\":\"2\"\n" +
"}";
TestObject testObject = JSONObject.parseObject(jsonText, TestObject.class);
System.out.println(testObject);
输出结果:
(4)从json中获取属性
String jsonText = "{\n" +
"\t\"field1\":\"1\",\n" +
"\t\"field2\":\"2\"\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
String field1 = String.valueOf(jsonObject.get("field1"));
System.out.println(field1);
输出结果:
(5)json转换为List
String jsonText = "[{\"field1\":\"1\",\"field2\":\"2\"},{\"field1\":\"3\",\"field2\":\"3\"}]";
List<TestObject> arrayLists = JSONObject.parseArray(jsonText, TestObject.class);
for (TestObject testObject : arrayLists) {
System.out.println(testObject);
}
输出结果:
(6)json转Map
String jsonText = "{\n" +
"\t\"fieldName1\":\"1\",\n" +
"\t\"fieldName2\":\"2\"\n" +
"}";
Map<String,Object> map = JSONObject.parseObject(jsonText, HashMap.class);
System.out.println(map);
输出结果:
(7)json转Set
String jsonText = "[1,2,3,1]";
Set<String> set = JSONObject.parseObject(jsonText, HashSet.class);
System.out.println(set);
输出结果:
(8)去除json对象中某个属性
String jsonText = "{\n" +
"\t\"fieldName1\":\"1\",\n" +
"\t\"fieldName2\":\"2\"\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
Set<String> keys = jsonObject.keySet();
keys.remove("fieldName1");
System.out.println(jsonObject);
输出结果:
(9)向JSON对象中添加属性
String jsonText = "{\n" +
"\t\"fieldName1\":\"1\",\n" +
"\t\"fieldName2\":\"2\"\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
jsonObject.put("fieldName3","3");
System.out.println(jsonObject);
输出结果:
(10)修改Json对象中的属性
String jsonText = "{\n" +
"\t\"fieldName1\":\"1\",\n" +
"\t\"fieldName2\":\"2\"\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
jsonObject.put("fieldName2","22");
System.out.println(jsonObject);
输出结果:
(11)判断JSON对象中是否存在某个属性
String jsonText = "{\n" +
"\t\"fieldName1\":\"1\",\n" +
"\t\"fieldName2\":\"2\"\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
boolean result = jsonObject.containsKey("fieldName1");
System.out.println(result);
输出结果:
(12) Json中日期格式的处理
Date date = new Date();
String jsonStringWithDateFormat = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(jsonStringWithDateFormat);
输出结果: