• Android 中的Json解析工具fastjson 、序列化、反序列化


    Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式

    1、fastjson简介

         阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
        速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;

        功能强大,完全支持JavaBean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;

        支持Android;开源 (Apache 2.0)

    2、fastjson下载地址

         gitHub 下载地址 : https://github.com/alibaba/fastjson

         Android jar包下载: http://repo1.maven.org/maven2/com/alibaba/fastjson/1.1.43.android/

       

    3、常用的方法

        (1) 将JsonArray字符串转化成 list 集合, 比如:

             JSONArray array = 。。。。

             List<ADBeen> adbeenList = new ArrayList<ADBeen>() ;

             adbeenList = JSON.parseArray( array.toString() , ADBeen.class);

        (2)  将JavaBean序列化为JSON文本 

           JSON.toJSONString( Object object )

        (3) 日期格式化

        

    	public void test5(){      
    		Date date=new Date();    
    		//输出毫秒值   
    		System.out.println(JSON.toJSONString(date));  
    		//默认格式为yyyy-MM-dd HH:mm:ss    
    		System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));  
    		//根据自定义格式输出日期  
    		System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));   
    	}
    

       4  fastjson 解析json字符串为四种类型

          1. JavaBean

              Person person = JSON.parseObject(jsonString, Person.class);

          2. List<JavaBean>

              List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

          3. List<String>

              List<String> listString = JSON.parseArray(jsonString, String.class);

          4. List<Map<String,Object>>

              List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){}); 

                (注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0 ,

                  参考前篇程序运行结果图GSON方式生成和解析json数据)

    5、List集合转化为JSON字符串 

    package com.app;
    
    import java.io.Serializable;
    
    public class User implements Serializable{
        private static final long serialVersionUID = 1L;
        
        private String name ;
        private String age  ;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
    }
       User user1 = new User() ;
       user1.setName( "jack" ) ;
       user1.setAge( "30" );
            
       User user2 = new User() ;
       user2.setName( "sam" ) ;
       user2.setAge( "45" );
            
       List<User> list = new ArrayList<User>() ;
       list.add( user1 ) ;
       list.add( user2 ) ;
            
       HashMap<String, Object> map = new HashMap<String, Object>();  
       map.put( "data", list ) ;
            
       String string = JSON.toJSONString( map ) ;
            
       System.out.println( "ssss" + string );

    运行结果:{"data":[{"age":"30","name":"jack"},{"age":"45","name":"sam"}]}

  • 相关阅读:
    Richardson成熟度模型:关于REST的不同风格
    领域驱动设计
    dubbo初探
    pom使用异常问题
    [转]解决BootStrap validator验证的图标错位问题
    万恶的360浏览器
    利用Barcode4j实现输出ean13条形码到文件、流的工具类
    使用hibernate中的hql进行分页设置setMaxResults(int a)出错,索引1越界,hql执行不了等等问题
    Mysql 5.6以上版本zip安装方法
    Hibernate5生成的映射文件导致findByExample无法正确查询到结果
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/4492684.html
Copyright © 2020-2023  润新知