`

Jackson学习四之使用Streaming API创建以及读取JSON

 
阅读更多

参考文章:http://www.mkyong.com/java/jackson-streaming-api-to-read-and-write-json/

 

例子中某些方法已经废弃,直接替换掉了,将原文两个例子放在一个类中:

package com.jingshou.jackson;

import java.io.File;
import java.io.IOException;

import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;

public class JacksonTest6 {

	public static void main(String[] args) throws IOException {
		JsonFactory jfactory = new JsonFactory();
		 
		/*** write to file ***/
		JsonGenerator jGenerator = jfactory.createGenerator(new File(
				"c:\\user.json"),  JsonEncoding.UTF8);
		jGenerator.writeStartObject(); // {
	 
		jGenerator.writeStringField("name", "mkyong"); // "name" : "mkyong"
		jGenerator.writeNumberField("age", 29); // "age" : 29
	 
		jGenerator.writeFieldName("messages"); // "messages" :
		jGenerator.writeStartArray(); // [
	 
		jGenerator.writeString("msg 1"); // "msg 1"
		jGenerator.writeString("msg 2"); // "msg 2"
		jGenerator.writeString("msg 3"); // "msg 3"
	 
		jGenerator.writeEndArray(); // ]
	 
		jGenerator.writeEndObject(); // }
		jGenerator.close();
		
		/*** read from file ***/
		JsonParser jParser = jfactory.createParser(new File("c:\\user.json"));
		// loop until token equal to "}"
		while (jParser.nextToken() != JsonToken.END_OBJECT) {
	 
			String fieldname = jParser.getCurrentName();
			if ("name".equals(fieldname)) {
	 
			  // current token is "name",
	          // move to next, which is "name"'s value
			  jParser.nextToken();
			  System.out.println(jParser.getText()); // display mkyong
	 
			}
	 
			if ("age".equals(fieldname)) {
	 
			  // current token is "age", 
	          // move to next, which is "name"'s value
			  jParser.nextToken();
			  System.out.println(jParser.getIntValue()); // display 29
	 
			}
	 
			if ("messages".equals(fieldname)) {
	 
			  jParser.nextToken(); // current token is "[", move next
	 
			  // messages is array, loop until token equal to "]"
			  while (jParser.nextToken() != JsonToken.END_ARRAY) {
	 
	                     // display msg1, msg2, msg3
			     System.out.println(jParser.getText()); 
	 
			  }
	 
			}
	 
		  }
		  jParser.close();

	}

}

 

小结:

  • 对于性能要求高的程序,推荐使用流API,否则使用其他方法
  • 不管是创建JsonGenerator还是JsonParser,都是使用JsonFactory

本文出自"lijingshou"博客,转载请务必保留此出处http://lijingshou.iteye.com/blog/2003580

分享到:
评论

相关推荐

    jackson操作json和javabean示例

    在这个名为"jackson操作json和javabean示例"的项目中,我们将深入探讨Jackson库的核心功能,特别是其流式API、工具类以及树型模型的使用。 1. **Jackson流式API**:流式API(Streaming API)是Jackson提供的低级别...

    Jackson 框架,轻易转换JSON(转)

    对于大数据量的处理,可以使用Jackson的Streaming API,它能高效地处理JSON输入输出,避免一次性加载整个JSON到内存中。 8. **模块(Module)**: Jackson有许多可选模块,如JAXB支持、Guava支持等,可以根据项目...

    解析Java的Jackson库中Streaming API的使用

    `JsonParser` 用于读取JSON数据,而 `JsonGenerator` 则用于生成JSON数据。 1. **JsonParser**: `JsonParser` 是解析JSON输入的抽象类,它通过一系列的事件(如开始对象、结束对象、字段名、值等)来解析JSON内容...

    Java_Jackson的核心部分,定义了流API以及基本的共享抽象.zip

    在这个核心模块中,Jackson定义了流式API(Streaming API)以及一些基本的共享抽象,这些抽象使得处理JSON数据变得高效且灵活。 流式API是Jackson的一个关键特性,它允许开发者逐个读取或写入JSON元素,而不需要一...

    json.zip_JSON

    Jackson 提供了多种API,如 Streaming API、Object Mapper API 和 JsonNode API,适用于不同的场景,从高性能的序列化到复杂的映射。 3. **org.json**:这是一个轻量级的库,提供了一些基本的JSON对象,如 ...

    jackson-jar

    目前维护的产品使用jackson处理json,现整理一下jackson相关资料,希望对初次接触jackson的新手有所帮助。 jackson主页: http://jackson.codehaus.org/ jackson document: ...

    xml转json包与教程

    1. **XML解析器**:在Java中,处理XML数据通常使用DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)。DOM一次性加载整个XML文档到内存,适合小规模数据;SAX事件驱动,逐行...

    Jackson 入门Jackson 入门

    - `JsonParser`用于读取JSON数据,而`JsonGenerator`用于生成JSON数据。 - 这种API基于事件驱动,允许程序逐个处理JSON元素,减少内存消耗和提高处理速度。 2. **数据绑定**: - 数据绑定是Jackson的核心特性,...

    JAVA 解析 JSON 数据(包齐全)

    - **读取JSON字符串**:你可以从文件、网络流或字符串中读取JSON数据。 ```java String jsonString = Files.readString(Paths.get("path_to_your_json_file.json")); ``` - **将JSON字符串转换为Java对象**:...

    jackson-core资源包

    1. **JsonParser**:这是解析JSON输入的类,用于读取JSON格式的数据流。JsonParser提供了逐个访问JSON结构中的元素(如对象、数组、字段等)的方法,可以用来解析JSON字符串或输入流。 2. **JsonGenerator**:与...

    jackson-core-asl-0.9.9-2.jar.zip

    - 解析JSON:你可以创建一个`JsonParser`实例,然后使用它来逐个读取JSON令牌(如对象、数组、键值对等),并进行相应的处理。 - 生成JSON:通过`JsonGenerator`,你可以构建JSON结构,向输出流写入JSON数据。 - ...

    Android 的 JSON解析源码

    - 性能优化时,考虑使用流式解析(Streaming API)以减少内存消耗。 - 使用try-catch块处理可能的`JSONException`,确保程序的健壮性。 总之,理解Android平台上的JSON解析源码有助于我们更好地利用这些工具,提升...

    使用Jackson来实现Java对象与JSON的相互转换的教程

    Jackson库支持的数据绑定方式包括Data Binding、Streaming API以及Tree Model。 ### 知识点二:如何使用Jackson进行Java对象与JSON的转换 #### 1. ObjectMapper类 在Jackson库中,`ObjectMapper`类是进行JSON数据...

    jackson-databind-2.4.3.jar

    5. **使用场景**:Jackson-databind适用于需要将Java对象与JSON数据进行交互的任何场合,例如RESTful Web服务、服务器端处理客户端请求、存储/读取JSON格式的配置文件等。Jackson的灵活性使得它可以处理复杂的对象...

    jackson-core-asl-1.9.11.jar

    Jackson是一个广泛使用的Java JSON处理库,其核心组件之一便是`jackson-core-asl`。这个库是Jackson 1.x版本中的核心部分,主要负责JSON序列化和反序列化的功能。在本文中,我们将深入探讨`jackson-core-asl-1.9.11....

    Java-Java操作XML和JSON教程

    在Java中,我们可以使用DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等库来解析和生成XML文档。 1. **DOM解析器**:DOM解析器将整个XML文档加载到内存中的一个树形...

    Jackson高性能的JSON处理-其他

    总结,Jackson库是Java世界中处理JSON的首选工具,其高效的Streaming API、强大的序列化和反序列化能力,以及丰富的注解配置,都使其在处理JSON数据时表现出色。无论是在小型项目还是大型企业级应用中,Jackson都能...

    官网jackson快速指导

    - **功能强大**:它是最强大的处理方式之一,能够以离散事件的形式读取和写入 JSON 内容。 - **低开销**:具有最低的开销,并提供最快的数据读写操作速度。 - **类比于 Stax 解析器**:类似于 XML 中的 Stax 解析...

    java读取kml文件数据

    在Java中,我们可以通过DOM(Document Object Model)、SAX(Simple API for XML)或者StAX(Streaming API for XML)等XML解析库来读取和解析KML文件。这里可能会使用到如JAXB(Java Architecture for XML Binding...

    高性能的JSON处理 Jackson源码

    1. `JsonParser`:用于读取JSON输入并提供流式API。 2. `JsonGenerator`:用于将Java对象写入JSON输出,也支持流式处理。 3. `ObjectMapper`:作为核心类,提供了将Java对象与JSON之间相互转换的高级接口,支持树...

Global site tag (gtag.js) - Google Analytics