阿里巴巴FastJson包的使用心得

阿里巴巴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.alibabagroupId>
      <artifactId>fastjsonartifactId>
      <version>1.2.83version>
    dependency>

4.FastJson中的一些对象

(1)JSONObject

JSONObject相当于Map,例如:

		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);

输出结果:
阿里巴巴FastJson包的使用心得_第1张图片

(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);

输出结果:
阿里巴巴FastJson包的使用心得_第2张图片

(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);

输出结果:
阿里巴巴FastJson包的使用心得_第3张图片

(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);

输出结果:
阿里巴巴FastJson包的使用心得_第4张图片

(7)json转Set

String jsonText = "[1,2,3,1]";
Set<String> set = JSONObject.parseObject(jsonText, HashSet.class);
System.out.println(set);

输出结果:
阿里巴巴FastJson包的使用心得_第5张图片

(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);

输出结果:
阿里巴巴FastJson包的使用心得_第6张图片

(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);

输出结果:
阿里巴巴FastJson包的使用心得_第7张图片

(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);

输出结果:
阿里巴巴FastJson包的使用心得_第8张图片

(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);

输出结果:
阿里巴巴FastJson包的使用心得_第9张图片

(12) Json中日期格式的处理

Date date = new Date();
String jsonStringWithDateFormat = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(jsonStringWithDateFormat);

输出结果:
阿里巴巴FastJson包的使用心得_第10张图片

你可能感兴趣的:(java)