zoukankan      html  css  js  c++  java
  • Json解析包FastJson使用

    阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
    速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
    功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)

    源码地址:https://github.com/alibaba/fastjson


    Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

    public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
    *public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
    *public static final  T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean 
    *public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
    *public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 
    *public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
    public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
    public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray
     
    简单的测试应用如下:
    1.TestPerson.java
    package com.pers.fastjson;
    
    public class TestPerson {
        private int age;
        private String name;
    
        public TestPerson() {
    
        }
    
        public TestPerson(int age, String name) {
            this.age = age;
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    2.TestFastJson.java

    package com.pers.fastjson;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import com.alibaba.fastjson.JSON;//阿里巴巴FastJson是一个Josn处理工具包 包括序列化和反序列化 两部分
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    public final class TestFastJson {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            TestPerson json = new TestPerson(19,"hoobey");
            ArrayList<TestPerson> list = new ArrayList<TestPerson>();
            list.add(json);
            list.add(new TestPerson(12,"小米"));
            //将集合或者对象序列化为JSON
            System.out.println(JSON.toJSON(json));//{"name":"hoobey","age":19}
            System.out.println(JSON.toJSON(list));//[{"name":"hoobey","age":19},{"name":"小米","age":12}]
        
        
            //Json串反序列化成对象                      // 把JSON文本parse成JSONObject 
            TestPerson person = JSON.parseObject("{"name":"李明","age":19}", TestPerson.class);
            //name:李明,age:19 
            System.out.printf("name:%s,age:%d
    ",person.getName(),person.getAge());
            
             
            String str = "[{"name":"李明","age":19},{"name":"张三","age":12}]";
            //数组对象反序列化成集合                                                  //把JSON文本parse成JavaBean集合
            List<TestPerson> listPerson = JSON.parseArray(str,TestPerson.class);
             
            for(TestPerson item : listPerson){
                System.out.println( item.getName());//李明     张三
                System.out.println( item.getAge());// 19  12
            }
            
            //没有对象直接解析JSON对象        parseObject(String text); // 把JSON文本parse成JSONObject  
            JSONObject jobj = JSON.parseObject("{"name":"李明","age":19}");
            //name:李明,age:19
            System.out.printf("name:%s,age:%d
    ",jobj.getString("name"),jobj.getBigInteger("age"));
           
            
            
            System.out.println("------------------------------");  
            //没有对象直接解析JSON数组
            JSONArray jarr = JSON.parseArray("[{"name":"李明","age":19},{"name":"张三","age":12}]");
             /*
              * name:李明,age:19
                name:张三,age:12
              */
            for(int i=0,len=jarr.size();i<len;i++){
                JSONObject temp=  jarr.getJSONObject(i);
                System.out.printf("name:%s,age:%d
    ",temp.getString("name"),temp.getBigInteger("age"));
            }
    /*
     *             {"name":"李明","age":19}
                {"name":"张三","age":12}         
     */
            for(Object obj:jarr){
                System.out.println(obj.toString());
            }
             
        }
     
    }

     关于System.out.printf("你好,%s,下年 ,你将会,%f",name,age)的说明:

    package com.pers.fastjson;
    
    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String name="hoobey";
            double age = 24.00;
            int age2 = 24;
            //你好,hoobey,下年 ,你将会,24 岁
            System.out.printf("你好,%s,下年 ,你将会,%f",name,age);
            System.out.println();
            System.out.printf("你好,%s,下年 ,你将会,%d",name,age2);
            /*
             * 解释:每一个以%开头的格式说明符都用后面给定的相应的参数替换,格式说明符尾部的转会符
                                将指示被格式化的数值类型:
                                其中:
                                f 表示浮点数;
                                s表示字符串;
                                d表示十进制数;
             */
        }
    
    }
  • 相关阅读:
    跨平台开发得力助手
    一分钟将你的WPF应用程序变身成炫彩动态Metro风格
    因.Net Target Framework导致的编译错误
    WCF笔记
    WCF元数据发布的2种方式:httpGetEnabled与mex
    使用ClickOnce发布应用程序
    TFS笔记
    升级镁光M4固态硬盘的固件
    Android调用RESTful WCF服务
    用原生的android SDK与PhoneGap分别做了个示例,发现PhoneGap的要慢得多
  • 原文地址:https://www.cnblogs.com/hoobey/p/7832804.html
Copyright © 2011-2022 走看看