专业的JAVA编程教程与资源

网站首页 > java教程 正文

Jackson和fastjson简单用法及性能对比

temp10 2024-10-15 16:40:44 java教程 10 ℃ 0 评论

背景:

Java处理JSON数据有三个比较流行的类库FastJSON、Gson和Jackson。fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换工具,孰强孰弱呢?

Jackson和fastjson简单用法及性能对比

1 Json基本介绍

JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。

1.1 Json两种结构

JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

{
    key1:value1,
    key2:value2,
    ...
}

其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组。

数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

[
    {
        key1:value1,
        key2:value2 
    },
    {
         key3:value3,
         key4:value4   
}
]
  • 1.2字符串和Json表示方式字符串:指使用“”双引号或’’单引号包括的字符。
    例如:var comStr = ‘this is string’;
    json字符串:指的是符合json格式要求的js字符串。
    例如:var jsonStr = “{StudentID:’100’,Name:’tmac’,Hometown:’usa’}”;
    json对象:指符合json格式要求的js对象。
    例如:var jsonObj = { StudentID: “100”, Name: “tmac”, Hometown: “usa” };
  • 2 几种简单的Json库使用方式
  • 2.1 jackson使用

使用的jar包:
jackson-mapper-asl-1.8.11.jar
jackson-core-2.5.1.jar
jackson-databind-2.4.5.jar
也可是使用maven源配置。
一个简单的bean类:

package com.mmall.pojo;

import lombok.Data;

/**
 * Created by sww_6 on 2018/8/24.
 */
@Data
public class Users {

  private String username;
  
  private Integer age;
}

java对象到json字符串(序列化):

package com.mmall.common;


import com.mmall.pojo.Users;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;

/**
 * Created by sww_6 on 2018/8/24.
 */
public class BeanToJson {

  public static void main(String[] args) {
    //将对象转成json字符串
    Users users = new Users();
    users.setAge(18);
    users.setUsername("魏璎珞");
    ObjectMapper objectMapper = new ObjectMapper();
    try {
      String jsonString = objectMapper.writeValueAsString(users);
      System.out.println(jsonString);
    } catch (IOException e) {
      e.printStackTrace();
    }

    //将list集合转换成json字符串
    Users user2 = new Users();
    user2.setAge(18);
    user2.setUsername("沉壁");

    Users user3 = new Users();
    user3.setAge(18);
    user3.setUsername("永琪");

    List<Users> jsonList = new ArrayList<>();
    jsonList.add(user2);
    jsonList.add(user3);
    try {
      String list = objectMapper.writeValueAsString(jsonList);
      System.out.println(list);
    } catch (IOException e) {
      e.printStackTrace();
    }

    //将map集合转换成json字符串
    Map<String, Users> map = new HashMap();
    map.put("user2", user2);
    map.put("user3", user3);
    try {
      String mapJson = objectMapper.writeValueAsString(map);
      System.out.println(mapJson);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

运行结果:

一个含java对象集合变量的类,用于json字符串数组到对象集合:

package com.mmall.common;

import com.mmall.pojo.Users;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;

/**
 * Created by sww_6 on 2018/8/24.
 */
public class JsonToBeans {

  public static void main(String[] args) {
    //将json字符串转化为java对象
    String userJson = "{\"username\":\"福康安\",\"age\":18}";
    ObjectMapper objectMapper = new ObjectMapper();
    try {
      Users users = objectMapper.readValue(userJson, Users.class);
      System.out.println(users + ":" + users.getUsername() + "," + users.getAge());
    } catch (IOException e) {
      e.printStackTrace();
    }

    //将json字符串转化成java的list集合
    String jsonList = "{\"userList\":[{\"username\":\"永基\",\"age\":18},{\"username\":\"永荣\",\"age\":18}]}";
    try {
      ListBean listBean = objectMapper.readValue(jsonList, ListBean.class);
      System.out.println(listBean.getUserList());
    } catch (IOException e) {
      e.printStackTrace();
    }

    //将json转化成java的map集合
    String jsonMap = "{\"username\":\"五阿哥\",\"age\":18}";
    try {
      Map map = objectMapper.readValue(jsonMap, Map.class);
      System.out.println(map + ":" + map.get("username") + "," + map.get("age"));
    } catch (IOException e) {
      e.printStackTrace();
    }

    //将json字符串数组转换成Map的list集合。
    String json = "[{\"username\":\"傅恒\",\"age\":11},{\"username\":\"hsj\",\"age\":12}]";
    try {
      List<Map> list = objectMapper.readValue(json, List.class);
      System.out.println(list.get(0).get("username"));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

}

运行结果:

    • 2.2 fastjson使用fastjson 这是一个性能很好地 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点: 12a) 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
      b) 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
      c) 零依赖(没有依赖其它任何类库除了JDK)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表