阿里的FastJSON使用

本文详细介绍了如何使用FastJSON进行Java对象与JSON字符串的序列化和反序列化操作,包括Map、List、JavaBean的转换,以及日期格式化的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果使用Maven,在pom.xml文件加入以下依赖

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.23</version>
 </dependency>

序列化:将java对象转换为json字符串

1.将Map转成JSON

     Map<String,Object> map = new HashMap<String, Object>();
     map.put("key1","value1");
     map.put("key2","value2");
     String mapJson= JSON.toJSONString(map);
     System.out.println(mapJson);
    //输出
    {"key1":"value1","key2":"value2"}

2.将List<Map转成JSON

   List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        Map<String,Object> map1 = new HashMap<String, Object>();
        map1.put("key1","value1");
        map1.put("key2","value2");

        Map<String,Object> map2 = new HashMap<String, Object>();
        map2.put("key1","value3");
        map2.put("key2","value4");
        list.add(map1);
        list.add(map2);

        String jsonstr = JSON.toJSONString(list);
        System.out.println(jsonstr);
        
        //输出
        [{"key1":"value1","key2":"value2"},{"key1":"value3","key2":"value4"}]

      String objJson = JSON.toJSONString(Object object, boolean prettyFormat);
      传入一个对象和一个布尔类型(是否格式化),将对象转成格式化后的JSON字符串。
      String listJson= JSONArray.toJSONString(list,true);
      System.out.println(listJson);
      [
{
	"key1":"value1",
	"key2":"value2"
},
{
	"key1":"value3",
   	"key2":"value4"
	}
]
使用单引号
String listJson = JSON.toJSONString(list, SerializerFeature.UseSingleQuotes);
//输出
[{'key1':'value1','key2':'value2'},{'key1':'value3','key2':'value4'}]    

3.自定义JavaBean User转成JSON。

   User user = new User();
    user.setId(1);
    user.setUsername("乐乐");
    user.setAge(12);

    String userJson = JSON.toJSONString(user);
    System.out.println(userJson);
    //输出
    {"age":12,"id":1,"username":"乐乐"}

4.日期格式化:

FastJSON可以直接对日期类型格式化,在缺省的情况下,FastJSON会将Date转成long。

(1)FastJSON将java.util.Date转成long。
      String dateJson = JSON.toJSONString(new Date());
      System.out.println(dateJson);
  //输出
  1547900848449
(2)使用SerializerFeature特性格式化日期。
    String dateJson = JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);
        System.out.println(dateJson);
    //输出
  "2019-01-19 20:29:24"
(3)指定输出日期格式
   String dateJson = JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss");
    System.out.println(dateJson);
 //输出
 "2019-01-19 20:32:34"

反序列化:将json字符串为java对象

User user1 = (User) JSON.parse(userJson);
 System.out.println(user1.getAge());
 //输出 
 22

 指定Class信息反序列化
 User user1 = JSON.parseObject(userJson, User.class);
2 System.out.println(user1.getUserName());
//输出
乐乐

    集合反序列化
List<Map> list1 = JSON.parseArray(listJson, Map.class);            
 for(Map<String, Object> map : list1){
     System.out.println(map.get("key1"));
     System.out.println(map.get("key2"));         
 }
 //输出
 value1 
 value2
 value3
 value4

泛型的反序列化(使用TypeReference传入类型信息)

    Map<String, Object> map1 = JSON.parseObject(mapJson, new TypeReference<Map<String, Object>>(){});
     System.out.println(map1.get("key1"));
     System.out.println(map1.get("key2"));
     //输出
     value1
     value2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java程序员劝退师

感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值