`

Java生成json技术比较

 
阅读更多

一切源于尘土,一切归于尘土,事事有原因就有结果,不要在乎结果是什么,享受其中的过程最重要

                                                                                                                             -----chenhailong

 

JavaJson的工具很多,现在主要流行的有Jackson,Gson,JsonSimple

 

我这里主要比较这三种。

 

Jackson发展的还算顺利,官网:http://jackson.codehaus.org/ 

官网上的信息不是太多,但也够用了。

Jackson官网很大胆的说了高性能Json转换工具,嘿嘿,我感觉性能上确实不错,大量测试中Jackson给的状态还算不错的哦。不过没有JsonSimple快,我们一会再说

官网上给出了

 

  • Streaming (reading, writing)
  • FAST (measured to be faster than any other Java json parser and data binder)
  • Powerful (full data binding for common JDK classes as well as any Java bean class, Collection, Map or Enum)
  • Zero-dependency (does not rely on other packages beyond JDK)
  • Open Source (LGPL or AL)
  • Fully conformant
  • Extremely configurable


1.流操作
2.快捷
3.强大
4.零依赖(还算可以,不过接下来我介绍的都是零依赖)
5.开源(我喜欢开源)
6.简单
7.极限配置

   
Gson 是google出的Json 解析工具

官网:http://code.google.com/p/google-gson/

不能说是官网,现在这个工具,还没有成为系统,可以说维护上有差距。至于性能上,可以说是非常的低了。

User Guide 
https://sites.google.com/site/gson/gson-user-guide


Jsonsimple 
官网:http://code.google.com/p/json-simple/
也是没有正规的组织者维护的项目,不过性能上,可以说是非常的棒,我比较推荐这个

下面看看比较代码的实现

package com.bean;

import java.util.ArrayList;
import java.util.List;

import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonProperty;

@JsonAutoDetect
public class User {

    @JsonProperty
    private int age = 29;

    @JsonProperty
    private String name = "chenhailong";

    @JsonProperty
    private List<String> messages = new ArrayList<String>();

    public User() {
        for (int i = 0; i < 10000; i++) {
            messages.add("msg");
        }

    }

    @Override
    public String toString() {
        return "User [age=" + age + ", name=" + name + ", " + "messages=" + messages + "]";
    }
}
 

Gson 代码

package com.gson;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;

import com.bean.User;
import com.google.gson.Gson;

public class GsonRead {

    public static void main(String[] args) {

        Gson gson = new Gson();

        try {
            Date startDate = new Date();
            BufferedReader br = new BufferedReader(new FileReader("user.json"));

            User obj = gson.fromJson(br, User.class);

            Date endDate = new Date();

            // display to console
            System.out.println(endDate.getTime() - startDate.getTime());

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
 

 
package com.gson;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import com.bean.User;
import com.google.gson.Gson;

public class GsonWirte {
    public static void main(String[] args) {

        Date startDate = new Date();
        User obj = new User();
        Gson gson = new Gson();
        String json = gson.toJson(obj);

        try {
            FileWriter writer = new FileWriter("user.json");
            writer.write(json);
            writer.close();
            Date endDate = new Date();

            // display to console
            System.out.println(endDate.getTime() - startDate.getTime());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
 
  

Jackson的代码

 

 

package com.jackson;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import com.bean.User;

public class JSonRead {
    public static void main(String[] args) {

        ObjectMapper mapper = new ObjectMapper();

        try {

            Date startDate = new Date();

            // read from file, convert it to user class
            User user = mapper.readValue(new File("user.json"), User.class);
            Date endDate = new Date();

            // display to console
            System.out.println(endDate.getTime() - startDate.getTime());

        } catch (JsonGenerationException e) {

            e.printStackTrace();

        } catch (JsonMappingException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }
}
 

 

 

 

package com.jackson;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import com.bean.User;

public class JSonWirte {
    public static void main(String[] args) {

        User user = new User();
        ObjectMapper mapper = new ObjectMapper();

        try {

            Date startDate = new Date();
            mapper.writeValue(new File("user.json"), user);

            // System.out.println(mapper.writeValueAsString(user));
            Date endDate = new Date();

            System.out.println(endDate.getTime() - startDate.getTime());

        } catch (JsonGenerationException e) {

            e.printStackTrace();

        } catch (JsonMappingException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

 

 

 

Jsonsimple的代码

 

 

package com.jsonsimple;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonSampleRead {
    public static void main(String[] args) {

        JSONParser parser = new JSONParser();

        try {

            Date startDate = new Date();
            Object obj = parser.parse(new FileReader("user.json"));

            JSONObject jsonObject = (JSONObject) obj;
            Date endDate = new Date();

            System.out.println(endDate.getTime() - startDate.getTime());

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }
}

 

 

 

 

package com.jsonsimple;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class JsonSampleWirter {
    public static void main(String[] args) {

        JSONObject obj = new JSONObject();
        obj.put("name", "mkyong.com");
        obj.put("age", new Integer(100));

        JSONArray list = new JSONArray();
        for (int i = 0; i < 10000; i++) {
            list.add("msg 1");

        }

        obj.put("messages", list);

        try {

            Date startDate = new Date();
            FileWriter file = new FileWriter("user.json");
            file.write(obj.toJSONString());
            file.flush();
            file.close();
            Date endDate = new Date();

            System.out.println(endDate.getTime() - startDate.getTime());

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

 

 

 

比较结果

 

 

读的方面: Jsonsimple > Jackson > Gson

 

写的方面:Jsonsimple > Jackson > Gson

 

下面提供功能,大家也可以尝试一下

分享到:
评论

相关推荐

    java服务端生成json(json服务端)

    Java服务端生成JSON是Web应用开发中的常见任务,主要用于数据交换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以使用多种库来...

    使用java代码生成json文件和word文档!

    总结,使用Java生成JSON文件和Word文档需要理解数据序列化(如JSON)的概念,以及使用相关库(如Jackson和Apache POI)提供的API。通过这些库,你可以轻松地将Java对象转换为可读的JSON格式,或创建结构化的Word文档...

    java后台生成JSON数据

    Java 后台生成 JSON 数据是现代 Web 应用开发中的常见任务,特别是在与前端框架如 EXT 进行数据交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析...

    java转json串的几种方法

    2. **通过JSONObject生成json串** 如果你已经有了一个Map对象,你可以创建一个`JSONObject`,然后使用`toJSONString()`方法将其转换为JSON字符串。例如: ```java Map, Object&gt; map = new HashMap(); map.put(...

    模仿json,根据对象生成json字符串,根据字符串生成对象

    本文将深入探讨如何模仿JSON,根据对象生成JSON字符串,以及如何根据JSON字符串反向生成对象。 首先,我们要理解JSON的基本结构。一个JSON对象以大括号`{}`包围,其内部由键值对组成,键用双引号`""`包裹,值可以是...

    Java bean转换为Json Schema

    1. **选择库**:选择适合的Java库,例如`com.github.fge:json-schema-generator`,它提供API来将Java Bean生成Json Schema。 2. **添加依赖**:在项目中引入库的Maven或Gradle依赖。 3. **编写Java Bean**:根据需求...

    使用Java在服务器端生成JSON代码

    由此,在开源代码有老外使用Java生成JSON代码,本例子是翻写老外的开源例子,在使用部分有非常详细的注释说明,是学习使用Java封装客户端对象的好例子。 环境:Window XP professional, Ant 1.7, JDK 1.6 注意:本...

    java开发生成json的jar包

    在实际开发中,还可能涉及到JSON的复杂类型处理,如处理嵌套结构、自定义序列化器、处理日期时间格式等,这些都是Java生成JSON时可能遇到的问题。通过不断学习和实践,开发者可以熟练掌握这些技能,提高开发效率。

    java 解析 json文件 java 解析 json文件

    它包括一个解析器(Parser)用于读取JSON,一个生成器(Generator)用于写入JSON,以及一个模型(Model)来表示JSON结构。 4. JSON-B(Java Bindings for JSON-B):这是另一个Java标准API,类似于Gson,但遵循JSR ...

    pb解析与生成json

    标题 "pb解析与生成json" 涉及到的技术主要围绕着ProtoBuf(Protocol Buffers)和JSON这两种数据序列化格式。ProtoBuf是由Google开发的一种高效的数据交换的序列化协议,而JSON则是一种轻量级的数据交换格式,广泛...

    java生成和解析json所用到的jar包

    标题提到的“java生成和解析json所用到的jar包”可能指的是如Jackson、Gson、org.json等流行的Java JSON库。 Jackson是Java中非常流行的一个JSON库,它提供了高效的性能和丰富的功能。使用Jackson,你可以通过`...

    生成JSON树型表结构

    在Java环境中,`TreeHelper`可能包含了生成JSON树型数据的函数,而`Tree`类可能是用于处理和展示树型数据的核心组件。 总的来说,生成JSON树型表结构是将层级数据转换为易于EXT树组件解析的格式,通过合理的数据库...

    java调用json参数的webservice

    在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...

    生成json数据需要的jar包

    标题提到的“生成json数据需要的jar包”就是指用于处理JSON的Java库的JAR文件。 在Java中,常见的JSON处理库有以下几种: 1. **Jackson**: Jackson是目前最流行的Java JSON库之一,它提供了一个高效且功能丰富的...

    java对象转JSON

    1.一款将java对象转成json或是将json转成java对象的jar文件; 2.在网上找了半天才找到,希望大家共享; 3.使用方法,大家在网上随便找,很多,很简单,一看便会; 4.此包在eclipse中和AndroidStudio中都可以用,但是,你如果...

    java-json.jar.zip

    JSON库在Java中通常是用来解析和生成JSON字符串的,而这个`java-json.jar`则提供了额外的功能,即XML到JSON以及JSON到XML的转换。这种转换在处理来自不同系统的数据时非常有用,尤其是当一个系统使用JSON,而另一个...

    根据json串自动生成JAVA BEAN工具

    在处理大量JSON数据时,手动创建对应的JavaBean类会非常耗时,因此出现了“根据json串自动生成JAVA BEAN工具”。 这类工具的主要功能是解析JSON字符串,并自动生成符合Java Bean规范的类,这样开发者就可以方便地将...

    JAVA下实现对JSON数据的生成

    本篇文章将深入探讨如何在Java环境下生成JSON数据。 首先,我们需要引入一个JSON库。在Java社区中,常用的JSON库有Jackson、Gson和org.json等。这里我们以Jackson库为例,因为它提供了丰富的API,能够方便地进行...

    Java Json生成工具 源代码

    总结起来,这个Java JSON生成工具的主题为我们提供了一个实战性的学习机会,通过比较自编和教师版本的工具,我们可以深化对JSON处理的理解,学习如何评估和选择适合的工具,同时也能提升我们的代码审查和代码优化...

Global site tag (gtag.js) - Google Analytics