fastjson的使用

  1. Json是一种轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

  2. Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象。Fastjson可以与任意Java对象一起使用。

  3. fastjson的优点

    • 速度快
      • fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
    • 使用广泛
      • fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
    • 测试完备
      • fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
    • 使用简单
      • fastjson的 API 十分简洁。
    • 功能完备
      • 支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。
  4. 导入依赖

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>xxx</version>
    </dependency>
    
  5. fastjson的使用

    • 实体类
    public class Person {
     
    @JSONField(name = "AGE")
    private int age;
    
    @JSONField(name = "FULL NAME")
    private String fullName;
    
    @JSONField(name = "DATE OF BIRTH")
    private Date dateOfBirth;
    
    public Person(int age, String fullName, Date dateOfBirth) {
        super();
        this.age = age;
        this.fullName= fullName;
        this.dateOfBirth = dateOfBirth;
    }
    
    // 标准 getters & setters
    }
    
    • 使用 JSON.toJSONString() 将 Java 对象转换换为 JSON 对象:
    private List<Person> listOfPersons = new ArrayList<Person>();
     
    @Before
    public void setUp() {
        listOfPersons.add(new Person(15, "John Doe", new Date()));
        listOfPersons.add(new Person(20, "Janette Doe", new Date()));
    }
     
    @Test
    public void whenJavaList_thanConvertToJsonCorrect() {
        String jsonOutput= JSON.toJSONString(listOfPersons);
    }
    
    • 使用 JSON.parseObject() 将 JSON 字符串转换为 Java 对象
    @Test
    public void whenJson_thanConvertToObjectCorrect() {
        Person person = new Person(20, "John", "Doe", new Date());
        String jsonObject = JSON.toJSONString(person);
        Person newPerson = JSON.parseObject(jsonObject, Person.class);
         
        assertEquals(newPerson.getAge(), 0); // 如果我们设置系列化为 false
        assertEquals(newPerson.getFullName(), listOfPersons.get(0).getFullName());
    }
    
posted @ 2024-05-14 14:42  Hanyta  阅读(17)  评论(0编辑  收藏  举报