zoukankan      html  css  js  c++  java
  • Java操作JSON数据(3)--fastjson操作JSON数据

    fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。本文介绍下fastjson的基本使用方法,包括序列化和反序列化;文中所使用到的软件版本:Java 1.8.0_191、fastjson1.2.62。

    1、引入依赖

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

    2、序列化

        public static String serialize() {
            MyBean bean = new MyBean();
            bean.setS("测试字符串");
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.HOUR_OF_DAY, -1);
            bean.setD(calendar.getTime());
    
            List<MyBean> list = new ArrayList<MyBean>();
            list.add(bean);
            Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>();
            map.put("data", list);
            
            /*
             * "yyyy-MM-dd HH:mm:ss" 设置日期格式,也可在类属性上使用@JSONField(format="yyyy-MM-dd HH:mm:ss")注解来设置
             * SerializerFeature.WriteMapNullValue 输出值为null的字段
             * SerializerFeature.WriteNullStringAsEmpty 字符串如果为null则输出""
             */
            String result = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty); 
            System.out.println(result);
            return result;
        }

    3、反序列化

        public static void deserialize() {
            String s = serialize();
            TypeReference<Map<String, List<MyBean>>> type = new TypeReference<Map<String, List<MyBean>>>(){};
            Map<String, List<MyBean>> map = JSON.parseObject(s, type);
            System.out.println(map);
            
            //直接通过api获取相应数据
            JSONObject jsonObject = JSON.parseObject(s);
            JSONArray JsonArray = jsonObject.getJSONArray("data");
            JSONObject bean = JsonArray.getJSONObject(0);
            System.out.println(bean.getString("s"));
            //...
        }

    4、完整例子

    package com.inspur.demo.json;
    
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.TypeReference;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    
    /**
     * fastjson操作JSON数据
     */
    public class FastjsonCase {
        /**
         * 序列化
         */
        public static String serialize() {
            MyBean bean = new MyBean();
            bean.setS("测试字符串");
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.HOUR_OF_DAY, -1);
            bean.setD(calendar.getTime());
    
            List<MyBean> list = new ArrayList<MyBean>();
            list.add(bean);
            Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>();
            map.put("data", list);
            
            /*
             * "yyyy-MM-dd HH:mm:ss" 设置日期格式,也可在类属性上使用@JSONField(format="yyyy-MM-dd HH:mm:ss")注解来设置
             * SerializerFeature.WriteMapNullValue 输出值为null的字段
             * SerializerFeature.WriteNullStringAsEmpty 字符串如果为null则输出""
             */
            String result = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty); 
            System.out.println(result);
            return result;
        }
        
        /**
         * 反序列化
         */
        public static void deserialize() {
            String s = serialize();
            TypeReference<Map<String, List<MyBean>>> type = new TypeReference<Map<String, List<MyBean>>>(){};
            Map<String, List<MyBean>> map = JSON.parseObject(s, type);
            System.out.println(map);
            
            //直接通过api获取相应数据
            JSONObject jsonObject = JSON.parseObject(s);
            JSONArray JsonArray = jsonObject.getJSONArray("data");
            JSONObject bean = JsonArray.getJSONObject(0);
            System.out.println(bean.getString("s"));
            //...
        }
        
        
        public static void main(String[] args) {
            serialize();
            deserialize();
        }
    
    }
    FastjsonCase
    package com.inspur.demo.json;
    
    import java.util.Arrays;
    import java.util.Date;
    
    public class MyBean {
        private String s = "字符串";
        private String s2;
        private String s3 = "字符串3";
        private int i = 123;
        private Integer i2;
        private char c = '到';
        private char[] c2 = new char[]{'a', 'b'};
        private Date d = new Date();
        private Date[] d2 = new Date[]{new Date(), new Date()};
        public String getS() {
            return s;
        }
        public void setS(String s) {
            this.s = s;
        }
        public String getS2() {
            return s2;
        }
        public void setS2(String s2) {
            this.s2 = s2;
        }
        public String getS3() {
            return s3;
        }
        public void setS3(String s3) {
            this.s3 = s3;
        }
        public int getI() {
            return i;
        }
        public void setI(int i) {
            this.i = i;
        }
        public Integer getI2() {
            return i2;
        }
        public void setI2(Integer i2) {
            this.i2 = i2;
        }
        public char getC() {
            return c;
        }
        public void setC(char c) {
            this.c = c;
        }
        public char[] getC2() {
            return c2;
        }
        public void setC2(char[] c2) {
            this.c2 = c2;
        }
        public Date getD() {
            return d;
        }
        public void setD(Date d) {
            this.d = d;
        }
        public Date[] getD2() {
            return d2;
        }
        public void setD2(Date[] d2) {
            this.d2 = d2;
        }
        @Override
        public String toString() {
            return "MyBean [s=" + s + ", s2=" + s2 + ", s3=" + s3 + ", i=" + i + ", i2=" + i2 + ", c=" + c + ", c2="
                    + Arrays.toString(c2) + ", d=" + d + ", d2=" + Arrays.toString(d2) + "]";
        }
    }
    MyBean
  • 相关阅读:
    静态类型的 NSUserDefaults
    [转]iOS 10.2 XCode 8.2 证书申请 远程推送 打包上架
    [转-备忘]iOS11.0后APP的图标和启动图
    [转-备忘] iOS navigationBar
    测试管理_关于测试管理职位的招聘面试题
    [性能测试]关于在线用户线大于10万用户的测试
    [稳定性测试]性能测试之稳定性测试培训
    [LoadRunner]LR11安装或破解时报错的解决方法
    [windows]win10家庭版切换到管理员账户
    [缺陷管理]缺陷处理机制
  • 原文地址:https://www.cnblogs.com/wuyongyin/p/12010895.html
Copyright © 2011-2022 走看看