阿里巴巴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;}@Overridepublic 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);
输出结果: