`

《转》fastjson生成和解析json数据,序列化和反序列化数据

    博客分类:
  • java
阅读更多
fastjson生成和解析json数据,序列化和反序列化数据

本文讲解2点:

1. fastjson生成和解析json数据

  (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

2.通过一个android程序测试fastjson的用法。

fastjson简介:

Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。

一. fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

     String jsonStrng = JSON.toJSONString(object);

二. 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 ,



JSON解析器fastjson(阿里巴巴出品,版本1.1.26),如果定义了JSONObject为{"JACKIE_ZHANG":"张学友","ANDY_LAU":"刘德华","LIMING":"黎明","Aaron_Kwok":"郭富城"},那么读取值时,KEY顺序无序,测试代码:



    import com.alibaba.fastjson.JSONObject; 
     
     
    /**
     * Created by wangzhenfei on 14-4-15.
     */ 
    public class FastJsonTest { 
        public static void main(String[] args){ 
            String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; 
     
     
            //做5次测试 
            for(int i=0,j=5;i<j;i++) 
            { 
               JSONObject jsonObject = JSONObject.parseObject(jsonStr) ; 
               for(java.util.Map.Entry<String,Object> entry:jsonObject.entrySet()){ 
                   System.out.print(entry.getKey()+"-"+entry.getValue()+"\t"); 
               } 
                System.out.println();//用来换行 
            } 
        } 
    } 


运行结果:



    LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华 
    Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友 
    Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明 
    LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城 
    JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城 





解决办法:定义为JSONArray,代码如下:



    import com.alibaba.fastjson.JSONArray; 
     
    /**
     * Created by wangzhenfei on 14-4-15.
     */ 
    public class FastJsonTest { 
        public static void main(String[] args){ 
            String jsonStr = "[{\"JACKIE_ZHANG\":\"张学友\"},{\"ANDY_LAU\":\"刘德华\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ; 
            //做5次测试 
            for(int i=0,j=5;i<j;i++) 
            { 
                JSONArray jsonArray = JSONArray.parseArray(jsonStr); 
     
               for(int k=0;k<jsonArray.size();k++){ 
                   System.out.print(jsonArray.get(k) + "\t"); 
               } 
                System.out.println();//用来换行 
            } 
        } 
    } 


运行结果为:



    {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
    {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
    {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
    {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
    {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 





如果就想要定义为JSONObject,而不是JSONArray,可以选用其他JSON解析器,个人推荐使用google的gson,文档明显比fastjson好很多(从这里可以看出阿里巴巴和谷歌的差距):



    import com.google.gson.JsonElement; 
    import com.google.gson.JsonObject; 
    import com.google.gson.JsonParser; 
     
    /**
     * Created by wangzhenfei on 14-4-15.
     */ 
    public class FastJsonTest { 
        public static void main(String[] args){ 
            String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; 
            //做5次测试 
            for(int i=0,j=5;i<j;i++) 
            { 
                JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr); 
                for(java.util.Map.Entry<String,JsonElement> entry:jsonObject.entrySet()){ 
                    System.out.print(entry.getKey()+"-"+entry.getValue()+"\t"); 
                } 
                System.out.println();//用来换行 
            } 
        } 
    } 


运行结果:





        JACKIE_ZHANG-"张学友"  ANDY_LAU-"刘德华"  LIMING-"黎明" Aaron_Kwok-"郭富城"     
        JACKIE_ZHANG-"张学友"  ANDY_LAU-"刘德华"  LIMING-"黎明" Aaron_Kwok-"郭富城"     
        JACKIE_ZHANG-"张学友"  ANDY_LAU-"刘德华"  LIMING-"黎明" Aaron_Kwok-"郭富城"     
        JACKIE_ZHANG-"张学友"  ANDY_LAU-"刘德华"  LIMING-"黎明" Aaron_Kwok-"郭富城"     
        JACKIE_ZHANG-"张学友"  ANDY_LAU-"刘德华"  LIMING-"黎明" Aaron_Kwok-"郭富城"
原因地址:http://www.cnblogs.com/goody9807/p/4244862.html   
分享到:
评论

相关推荐

    java FASTJSON 解析复杂JSON实例源码

    总之,Fastjson是Java开发中处理JSON数据的理想选择,其强大的功能和高效的性能使得它可以轻松应对各种复杂的JSON解析和序列化任务。通过`JSONTest`这样的示例代码,我们可以更好地理解和掌握如何利用Fastjson进行...

    java中fastjson生成和解析json数据(序列化和反序列化数据)

    Fastjson的两个主要功能点在于生成(序列化)和解析(反序列化)JSON数据。 1. Fastjson生成JSON字符串 Fastjson能够将常见的Java数据类型如JavaBean、List、List、List, Object&gt;&gt;等转换为JSON格式的字符串,这在...

    使用fastjson实现对象和json串之间的相互转换的jar包

    这个过程被称为序列化和反序列化。在标题中提到的"使用fastjson实现对象和json串之间的相互转换的jar包",就是指通过引入Fastjson的jar依赖,开发者可以在项目中直接调用其API来实现这两个功能。 首先,让我们看看...

    fastjson解析json的jar

    2. **反序列化**:将JSON字符串解析为Java对象。Fastjson提供了`JSON.parseObject(jsonStr, YourClass.class)`方法,能够将JSON字符串转化为指定类型的Java对象。 3. **映射机制**:Fastjson支持字段映射,即使JSON...

    Java四大json库gson+fastjson+jackson+json-lib

    Jackson支持注解,可以自定义序列化和反序列化规则,同时兼容JSR 353(Java API for JSON Processing),适合处理复杂的JSON结构。 4. json-lib: json-lib是一个多语言支持的JSON库,最初由net.sf.json项目发展而...

    Fastjson工具进行JSON序列化

    JSON(Java Script Object ...重点说明了工具类fastjson 是怎么实现 JSON 的序列化和反序列化的。 首先你要确保在项目中已经添加了Fastjson的依赖包,否则需要手动添加。如果是Maven项目,可以在pom.xml中添加依赖;

    delphi_JSON序列化反序列化

    本篇将深入探讨Delphi中的JSON序列化和反序列化技术。 一、JSON简介 JSON是一种独立于语言的数据表示格式,它基于ECMAScript的一个子集。一个有效的JSON对象通常包含键值对(key-value pairs)的集合,数组或其他...

    很好用的JAVA类转JSON工具:FastJSON (2).pdf

    FastJSON还支持更复杂的转换,例如处理数组、集合、Map等数据结构,以及自定义序列化和反序列化的逻辑。对于自定义逻辑,可以使用注解`@JSONField`来指定字段的序列化和反序列化行为,比如忽略某个字段、自定义序列...

    fastjson、gson、jackson序列化和反序列化所用 json

    在IT行业中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在Java世界里,为了方便地处理JSON数据,有三个主流的库被广泛应用,即...

    FastJson解析Json数据源码-旧版

    在Java开发中,FastJson是阿里巴巴提供的一款性能极佳的JSON库,它广泛应用于数据解析与序列化。本文将深入探讨FastJson解析Json数据的源码,帮助开发者理解其内部工作机制,提升对JSON处理的效率。 FastJson的核心...

    fastjson Json解析

    - **安全性**:Fastjson具有防止JSON注入的安全特性,可以有效避免因JSON反序列化导致的安全问题。 **2. 使用Fastjson进行JSON解析** - **解析JSON字符串为Java对象**: ```java String jsonString = "{\"name\":\...

    阿里 FastJson jar包,快速解析json数据

    阿里FastJson是一款由阿里巴巴开发的高性能的Java JSON库,它能快速、稳定地解析和生成JSON数据。在Java开发中,处理JSON数据是一项常见的任务,而FastJson因其卓越的性能和简洁的API,成为了许多开发者首选的JSON...

    C#简单快速的json组件fastJSON使用介绍.docx

    fastJSON 是一个快速的 JSON 组件,可以用于 C# 中对 JSON 数据的序列化和反序列化。下面是关于 fastJSON 的知识点: fastJSON 简介 fastJSON 是一个开源的 JSON 序列化组件,可以用于 C# 中对 JSON 数据的序列化...

    Json序列化与反序列化详解

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据...通过不断的实践和学习,开发者可以更好地驾驭JSON序列化与反序列化,从而更好地服务于项目需求。

    fastjson和jackson序列化数据的区别

    fastjson和jackson序列化数据的区别直奔主题一言不合就上代码注意 直奔主题 1、fastjson将字符串反序列化为对象时,只会处理第一层,内部会序列化为JsonObject或者JsonArray,使用二级结构和三级结构时还要再次处理...

    springboot实现FastJson解析json数据的方法

    通过上述介绍,我们可以看到FastJson在Spring Boot中的应用非常广泛,通过简单的配置就可以快速实现JSON数据的序列化和反序列化操作,提高了开发效率。同时,这些知识点对于使用Spring Boot进行Web开发的开发者来说...

    Java Json序列化与反序列化

    总结,Java中的JSON序列化与反序列化是数据交互的重要环节,Jackson和Gson是两个常用的库,它们提供了丰富的功能和良好的API设计,使得处理JSON数据变得简单高效。通过理解和掌握这些知识,开发者可以更好地在Java...

    Json解析案例json,fastjson,gson

    2. **易用性**:`gson`提供了更直观的API,如`fromJson`和`toJson`方法,使得序列化和反序列化更为简单。 3. **灵活性**:`gson`通过注解支持复杂的映射规则,而`fastjson`虽然相对简单,但在复杂场景下可能需要更多...

    SpringBoot Redis配置Fastjson进行序列化和反序列化实现

    Fastjson是阿里巴巴开发的一款高性能的JSON处理库,它提供了快速的序列化和反序列化能力,支持多种Java类型,包括JavaBean、集合、日期以及枚举等,并且无任何外部依赖,使得其在实际项目中得到广泛应用。...

    最新fastJSON C#的JSON开发包 v2.1.18

    FastJSON 是一个高效的 JSON 序列化和反序列化库,尤其在C#开发环境中被广泛应用。它以其轻量级、快速和简单的特点,使得处理JSON数据变得极其便捷。在这个最新的版本 v2.1.18 中,FastJSON 提供了更多的优化和改进...

Global site tag (gtag.js) - Google Analytics